status_t TElementsSorter::EvaluateRef(entry_ref &ref) { struct stat st; BEntry entry; // Can we create a BEntry? if (entry.SetTo(&ref, false) != B_OK) return B_ERROR; // Can we get a BStatable? if (entry.GetStat(&st) != B_OK) return B_ERROR; // Is it a SymLink? if (S_ISLNK(st.st_mode)) return HandleLink(ref, st); // How about a File? else if (S_ISREG(st.st_mode)) return HandleFile(ref, st); // A Directory? else if (S_ISDIR(st.st_mode)) { BDirectory dir; if (dir.SetTo(&ref) != B_OK) return B_ERROR; if (dir.IsRootDirectory()) return HandleVolume(ref, st, dir); else return HandleDirectory(ref, st, dir); } // No luck return B_ERROR; }
status_t TQueueDialog::EvaluateRef(entry_ref &ref) { struct stat st; BEntry entry; // Can we create a BEntry? if (entry.SetTo(&ref, false) != B_OK) { ERROR("TQueueDialog::HandleRefsMessage() - BEntry SetTo() failure -\n"); return B_ERROR; } // Can we get a BStatable? if (entry.GetStat(&st) != B_OK) { ERROR("TQueueDialog::HandleRefsMessage() - BEntry GetStat() failure -\n"); return B_ERROR; } // Is it a SymLink? if (S_ISLNK(st.st_mode)) return HandleLink(ref, st); // How about a File? else if (S_ISREG(st.st_mode)) return HandleFile(ref, st); // A Directory? else if (S_ISDIR(st.st_mode)) { BDirectory dir; if (dir.SetTo(&ref) != B_OK) { return B_ERROR; } if (dir.IsRootDirectory()) return HandleVolume(ref, st, dir); else return HandleDirectory(ref, st, dir); } // No luck return B_ERROR; }
void HandlePart(struct DiskPartition64 *partP) { int nvols = 0; DIR *dirp; struct dirent *dp; #ifdef AFS_NT40_ENV char pname[64]; char *p = pname; (void)sprintf(pname, "%s\\", VPartitionPath(partP)); #else char *p = VPartitionPath(partP); #endif if ((dirp = opendir(p)) == NULL) { printf("Can't read directory %s; giving up\n", p); exit(1); } if (dsizeOnly && !saveinodes) printf ("Volume-Id\t Volsize Auxsize Inodesize AVolsize SizeDiff (VolName)\n"); while ((dp = readdir(dirp))) { p = (char *)strrchr(dp->d_name, '.'); if (p != NULL && strcmp(p, VHDREXT) == 0) { HandleVolume(partP, dp->d_name); Totvolsize += totvolsize; TVauxsize += Vauxsize; TVvnodesize += Vvnodesize; TVdiskused += Vdiskused; nvols++; } } closedir(dirp); if (dsizeOnly) { printf("\nPart Totals %12d%9d%10d%10d%9d (%d volumes)\n\n", TVdiskused, TVauxsize, TVvnodesize, Totvolsize, Totvolsize - TVdiskused, nvols); } }
static int handleit(struct cmd_syndesc *as, void *arock) { struct cmd_item *ti; int err = 0; afs_uint32 volumeId = 0; char *partName = 0; struct DiskPartition64 *partP = NULL; #ifndef AFS_NT40_ENV if (geteuid() != 0) { printf("vol-info must be run as root; sorry\n"); exit(1); } #endif if (as->parms[0].items) online = 1; else online = 0; if (as->parms[1].items) DumpVnodes = 1; else DumpVnodes = 0; if (as->parms[2].items) DumpDate = 1; else DumpDate = 0; if (as->parms[3].items) DumpInodeNumber = 1; else DumpInodeNumber = 0; if (as->parms[4].items) InodeTimes = 1; else InodeTimes = 0; if ((ti = as->parms[5].items)) partName = ti->data; if ((ti = as->parms[6].items)) volumeId = strtoul(ti->data, NULL, 10); if (as->parms[7].items) dheader = 1; else dheader = 0; if (as->parms[8].items) { dsizeOnly = 1; dheader = 1; DumpVnodes = 1; } else dsizeOnly = 0; if (as->parms[9].items) { fixheader = 1; } else fixheader = 0; if (as->parms[10].items) { saveinodes = 1; dheader = 1; DumpVnodes = 1; } else saveinodes = 0; if (as->parms[11].items) { orphaned = 1; DumpVnodes = 1; } else #if defined(AFS_NAMEI_ENV) if (as->parms[12].items) { PrintFileNames = 1; DumpVnodes = 1; } else #endif orphaned = 0; DInit(10); err = VAttachPartitions(); if (err) { printf("%d partitions had errors during attach.\n", err); } if (partName) { partP = VGetPartition(partName, 0); if (!partP) { printf("%s is not an AFS partition name on this server.\n", partName); exit(1); } } if (!volumeId) { if (!partP) { HandleAllPart(); } else { HandlePart(partP); } } else { char name1[128]; if (!partP) { partP = FindCurrentPartition(); if (!partP) { printf("Current partition is not a vice partition.\n"); exit(1); } } (void)afs_snprintf(name1, sizeof name1, VFORMAT, afs_printable_uint32_lu(volumeId)); if (dsizeOnly && !saveinodes) printf ("Volume-Id\t Volsize Auxsize Inodesize AVolsize SizeDiff (VolName)\n"); HandleVolume(partP, name1); } return 0; }
static int handleit(struct cmd_syndesc *as, void *arock) { register struct cmd_item *ti; int err = 0; int volumeId = 0; char *partName = 0; char *fileName = NULL; struct DiskPartition64 *partP = NULL; char name1[128]; char tmpPartName[20]; int fromtime = 0; afs_int32 code; #ifndef AFS_NT40_ENV #if 0 if (geteuid() != 0) { fprintf(stderr, "voldump must be run as root; sorry\n"); exit(1); } #endif #endif if ((ti = as->parms[0].items)) partName = ti->data; if ((ti = as->parms[1].items)) volumeId = atoi(ti->data); if ((ti = as->parms[2].items)) fileName = ti->data; if ((ti = as->parms[3].items)) verbose = 1; if (as->parms[4].items && strcmp(as->parms[4].items->data, "0")) { code = ktime_DateToInt32(as->parms[4].items->data, &fromtime); if (code) { fprintf(STDERR, "failed to parse date '%s' (error=%d))\n", as->parms[4].items->data, code); return code; } } DInit(10); err = VAttachPartitions(); if (err) { fprintf(stderr, "%d partitions had errors during attach.\n", err); } if (partName) { if (strlen(partName) == 1) { if (partName[0] >= 'a' && partName[0] <= 'z') { strcpy(tmpPartName, "/vicepa"); tmpPartName[6] = partName[0]; partP = VGetPartition(tmpPartName, 0); } } else { partP = VGetPartition(partName, 0); } if (!partP) { fprintf(stderr, "%s is not an AFS partition name on this server.\n", partName); exit(1); } } if (!volumeId) { fprintf(stderr, "Must specify volume id!\n"); exit(1); } if (!partP) { fprintf(stderr, "must specify vice partition.\n"); exit(1); } (void)afs_snprintf(name1, sizeof name1, VFORMAT, (unsigned long)volumeId); HandleVolume(partP, name1, fileName, fromtime); return 0; }