| | |
| | | struct mntent *ent; |
| | | |
| | | int maxDrives, currentDrive, i, drive_found; |
| | | __ino64_t *statDrives; |
| | | DiskInfo *tmpDrives; |
| | | FILE *aFile; |
| | | DIR *disk_by_uuid_dir, *disk_by_label; |
| | | struct dirent *dir; |
| | | __ino64_t *statDrives = NULL; |
| | | DiskInfo *tmpDrives = NULL; |
| | | FILE *aFile = NULL; |
| | | DIR *disk_by_uuid_dir = NULL, *disk_by_label = NULL; |
| | | struct dirent *dir = NULL; |
| | | FUNCTION_RETURN result; |
| | | |
| | | if (diskInfos != NULL) { |
| | |
| | | aFile = setmntent("/proc/mounts", "r"); |
| | | if (aFile == NULL) { |
| | | /*proc not mounted*/ |
| | | free(tmpDrives); |
| | | free(statDrives); |
| | | return FUNC_RET_ERROR; |
| | | } |
| | | |
| | |
| | | if (drive_found == -1) { |
| | | LOG_DEBUG("mntent: %s %s %d\n", ent->mnt_fsname, ent->mnt_dir, |
| | | (unsigned long int)mount_stat.st_ino); |
| | | strcpy(tmpDrives[currentDrive].device, ent->mnt_fsname); |
| | | strncpy(tmpDrives[currentDrive].device, ent->mnt_fsname, 255-1); |
| | | statDrives[currentDrive] = mount_stat.st_ino; |
| | | drive_found = currentDrive; |
| | | currentDrive++; |
| | |
| | | if (stat(cur_dir, &sym_stat) == 0) { |
| | | for (i = 0; i < currentDrive; i++) { |
| | | if (sym_stat.st_ino == statDrives[i]) { |
| | | strncpy(tmpDrives[i].label, dir->d_name, 255); |
| | | strncpy(tmpDrives[i].label, dir->d_name, 255-1); |
| | | printf("label %d %s %s\n", i, tmpDrives[i].label, |
| | | tmpDrives[i].device); |
| | | } |
| | |
| | | strcat(proc_path, pidStr); |
| | | strcat(proc_path, "/exe"); |
| | | |
| | | int ch = readlink(proc_path, path, MAX_PATH); |
| | | int ch = readlink(proc_path, path, MAX_PATH-1); |
| | | if (ch != -1) { |
| | | path[ch] = '\0'; |
| | | strncpy(buffer, path, ch); |