tp->nplus = tp->nminus = 0;
tp->pluslist = tp->minuslist = 0;
tp->dfs = 0;
- sscanf(astr, "%d dfs:%d %s", &junk, &tp->dfs, tp->cell);
+ sscanf(astr, "%d dfs:%d %1024s", &junk, &tp->dfs, tp->cell);
return tp;
}
ta = malloc(sizeof(struct Acl));
assert(ta);
ta->dfs = 0;
- sscanf(astr, "%d dfs:%d %s", &ta->nplus, &ta->dfs, ta->cell);
+ sscanf(astr, "%d dfs:%d %1024s", &ta->nplus, &ta->dfs, ta->cell);
astr = SkipLine(astr);
sscanf(astr, "%d", &ta->nminus);
astr = SkipLine(astr);
last = 0;
first = 0;
for (i = 0; i < nplus; i++) {
- sscanf(astr, "%100s %d", tname, &trights);
+ sscanf(astr, "%99s %d", tname, &trights);
astr = SkipLine(astr);
tl = malloc(sizeof(struct AclEntry));
assert(tl);
last = 0;
first = 0;
for (i = 0; i < nminus; i++) {
- sscanf(astr, "%100s %d", tname, &trights);
+ sscanf(astr, "%99s %d", tname, &trights);
astr = SkipLine(astr);
tl = malloc(sizeof(struct AclEntry));
assert(tl);
{
static char mydata[AFS_PIOCTL_MAXSIZE];
char tstring[AFS_PIOCTL_MAXSIZE];
- char dfsstring[30];
+ char dfsstring[AFS_PIOCTL_MAXSIZE];
struct AclEntry *tp;
if (acl->dfs)
- sprintf(dfsstring, " dfs:%d %s", acl->dfs, acl->cell);
+ snprintf(dfsstring, sizeof(dfsstring), " dfs:%d %s", acl->dfs, acl->cell);
else
dfsstring[0] = '\0';
- sprintf(mydata, "%d%s\n%d\n", acl->nplus, dfsstring, acl->nminus);
+ snprintf(mydata, sizeof(mydata), "%d%s\n%d\n", acl->nplus, dfsstring, acl->nminus);
for (tp = acl->pluslist; tp; tp = tp->next) {
- sprintf(tstring, "%s %d\n", tp->name, tp->rights);
- strcat(mydata, tstring);
+ snprintf(tstring, sizeof(tstring), "%s %d\n", tp->name, tp->rights);
+ strlcat(mydata, tstring, sizeof(mydata));
}
for (tp = acl->minuslist; tp; tp = tp->next) {
- sprintf(tstring, "%s %d\n", tp->name, tp->rights);
- strcat(mydata, tstring);
+ snprintf(tstring, sizeof(tstring), "%s %d\n", tp->name, tp->rights);
+ strlcat(mydata, tstring, sizeof(mydata));
}
return mydata;
}
GetLastComponent(const char *data, char **outdir, char **outbase,
int *thru_symlink)
{
- char orig_name[1024]; /*Original name, may be modified */
- char true_name[1024]; /*``True'' dirname (e.g., symlink target) */
+ char orig_name[MAXPATHLEN]; /*Original name, may be modified */
+ char true_name[MAXPATHLEN]; /*``True'' dirname (e.g., symlink target) */
char *lastSlash;
struct stat statbuff; /*Buffer for status info */
int link_chars_read; /*Num chars read in readlink() */
if (thru_symlink)
*thru_symlink = 1;
- /* Read name of resolved file */
- link_chars_read = readlink(orig_name, true_name, 1024);
+ /* Read name of resolved file (leave space for NULL!) */
+ link_chars_read = readlink(orig_name, true_name, MAXPATHLEN-1);
if (link_chars_read <= 0) {
fprintf(stderr,
"%s: Can't read target name for '%s' symbolic link!\n",
code = pioctl(parent_dir, VIOC_AFS_STAT_MT_PT, &blob, 1);
free(last_component);
- free(parent_dir);
if (code == 0) {
printf("'%s' is a %smount point for volume '%s'\n", ti->data,
}
error = 1;
}
+ free(parent_dir);
}
return error;
}
blob.in_size = 0;
blob.out_size = AFS_PIOCTL_MAXSIZE;
blob.out = space;
- code =
- pioctl(Parent(as->parms[0].items->data), VIOC_FILE_CELL_NAME,
- &blob, 1);
+ code = pioctl(Parent(as->parms[0].items->data), VIOC_FILE_CELL_NAME,
+ &blob, 1);
+ if (code) {
+ fprintf(stderr,
+ "%s: couldn't get cell name for file's parent\n", pn);
+ return 1;
+ }
}
dir = afsconf_Open(AFSDIR_CLIENT_ETC_DIRPATH);
name = hostutil_GetNameByINet(addr);
} else {
addr = ntohl(addr);
- sprintf(tbuffer, "%d.%d.%d.%d", (addr >> 24) & 0xff,
+ snprintf(tbuffer, sizeof(tbuffer), "%d.%d.%d.%d", (addr >> 24) & 0xff,
(addr >> 16) & 0xff, (addr >> 8) & 0xff, addr & 0xff);
name = tbuffer;
}
name = hostutil_GetNameByINet(out->servers[i].server.s_addr);
} else {
addr = ntohl(out->servers[i].server.s_addr);
- sprintf(tbuffer, "%d.%d.%d.%d", (addr >> 24) & 0xff,
+ snprintf(tbuffer, sizeof(tbuffer), "%d.%d.%d.%d", (addr >> 24) & 0xff,
(addr >> 16) & 0xff, (addr >> 8) & 0xff, addr & 0xff);
name = tbuffer;
}
}
in->offset = out->next_offset;
- } while (out->next_offset > 0);
-
- if (blob.out != space)
- free(blob.out);
+ if (blob.out != space) {
+ free(blob.out);
+ }
+ } while (in->offset > 0);
return 0;
}
#endif
/* try to find volume location information */
- ts = cmd_CreateSyntax("getclientaddrs", GetClientAddrsCmd, NULL,
+ ts = cmd_CreateSyntax("getclientaddrs", GetClientAddrsCmd, NULL, 0,
"get client network interface addresses");
cmd_CreateAlias(ts, "gc");
- ts = cmd_CreateSyntax("setclientaddrs", SetClientAddrsCmd, NULL,
+ ts = cmd_CreateSyntax("setclientaddrs", SetClientAddrsCmd, NULL, 0,
"set client network interface addresses");
cmd_AddParm(ts, "-address", CMD_LIST, CMD_OPTIONAL | CMD_EXPANDS,
"client network interfaces");
cmd_CreateAlias(ts, "sc");
- ts = cmd_CreateSyntax("setserverprefs", SetPrefCmd, NULL,
+ ts = cmd_CreateSyntax("setserverprefs", SetPrefCmd, NULL, 0,
"set server ranks");
cmd_AddParm(ts, "-servers", CMD_LIST, CMD_OPTIONAL | CMD_EXPANDS,
"fileserver names and ranks");
cmd_AddParm(ts, "-stdin", CMD_FLAG, CMD_OPTIONAL, "input from stdin");
cmd_CreateAlias(ts, "sp");
- ts = cmd_CreateSyntax("getserverprefs", GetPrefCmd, NULL,
+ ts = cmd_CreateSyntax("getserverprefs", GetPrefCmd, NULL, 0,
"get server ranks");
cmd_AddParm(ts, "-file", CMD_SINGLE, CMD_OPTIONAL,
"output to named file");
/* cmd_AddParm(ts, "-cell", CMD_FLAG, CMD_OPTIONAL, "cellname"); */
cmd_CreateAlias(ts, "gp");
- ts = cmd_CreateSyntax("setacl", SetACLCmd, NULL, "set access control list");
+ ts = cmd_CreateSyntax("setacl", SetACLCmd, NULL, 0, "set access control list");
cmd_AddParm(ts, "-dir", CMD_LIST, 0, "directory");
cmd_AddParm(ts, "-acl", CMD_LIST, 0, "access list entries");
cmd_AddParm(ts, "-clear", CMD_FLAG, CMD_OPTIONAL, "clear access list");
"initial file acl (DFS only)");
cmd_CreateAlias(ts, "sa");
- ts = cmd_CreateSyntax("listacl", ListACLCmd, NULL,
+ ts = cmd_CreateSyntax("listacl", ListACLCmd, NULL, 0,
"list access control list");
cmd_AddParm(ts, "-path", CMD_LIST, CMD_OPTIONAL, "dir/file path");
parm_listacl_id = ts->nParms;
cmd_AddParm(ts, "-cmd", CMD_FLAG, CMD_OPTIONAL, "output as 'fs setacl' command");
cmd_CreateAlias(ts, "la");
- ts = cmd_CreateSyntax("getcalleraccess", GetCallerAccess, NULL,
+ ts = cmd_CreateSyntax("getcalleraccess", GetCallerAccess, NULL, 0,
"list callers access");
cmd_AddParm(ts, "-path", CMD_LIST, CMD_OPTIONAL, "dir/file path");
cmd_CreateAlias(ts, "gca");
- ts = cmd_CreateSyntax("cleanacl", CleanACLCmd, NULL,
+ ts = cmd_CreateSyntax("cleanacl", CleanACLCmd, NULL, 0,
"clean up access control list");
cmd_AddParm(ts, "-path", CMD_LIST, CMD_OPTIONAL, "dir/file path");
- ts = cmd_CreateSyntax("copyacl", CopyACLCmd, NULL,
+ ts = cmd_CreateSyntax("copyacl", CopyACLCmd, NULL, 0,
"copy access control list");
cmd_AddParm(ts, "-fromdir", CMD_SINGLE, 0,
"source directory (or DFS file)");
cmd_CreateAlias(ts, "ca");
- ts = cmd_CreateSyntax("flush", FlushCmd, NULL, "flush file from cache");
+ ts = cmd_CreateSyntax("flush", FlushCmd, NULL, 0, "flush file from cache");
cmd_AddParm(ts, "-path", CMD_LIST, CMD_OPTIONAL, "dir/file path");
- ts = cmd_CreateSyntax("flushmount", FlushMountCmd, NULL,
+ ts = cmd_CreateSyntax("flushmount", FlushMountCmd, NULL, 0,
"flush mount symlink from cache");
cmd_AddParm(ts, "-path", CMD_LIST, CMD_OPTIONAL, "dir/file path");
- ts = cmd_CreateSyntax("setvol", SetVolCmd, NULL, "set volume status");
+ ts = cmd_CreateSyntax("setvol", SetVolCmd, NULL, 0, "set volume status");
cmd_AddParm(ts, "-path", CMD_LIST, CMD_OPTIONAL, "dir/file path");
cmd_AddParm(ts, "-max", CMD_SINGLE, CMD_OPTIONAL,
"disk space quota in 1K units");
"offline message");
cmd_CreateAlias(ts, "sv");
- ts = cmd_CreateSyntax("messages", MessagesCmd, NULL,
+ ts = cmd_CreateSyntax("messages", MessagesCmd, NULL, 0,
"control Cache Manager messages");
cmd_AddParm(ts, "-show", CMD_SINGLE, CMD_OPTIONAL,
"[user|console|all|none]");
- ts = cmd_CreateSyntax("examine", ExamineCmd, NULL, "display file/volume status");
+ ts = cmd_CreateSyntax("examine", ExamineCmd, NULL, 0, "display file/volume status");
cmd_AddParm(ts, "-path", CMD_LIST, CMD_OPTIONAL, "dir/file path");
cmd_CreateAlias(ts, "lv");
cmd_CreateAlias(ts, "listvol");
- ts = cmd_CreateSyntax("listquota", ListQuotaCmd, NULL, "list volume quota");
+ ts = cmd_CreateSyntax("listquota", ListQuotaCmd, NULL, 0, "list volume quota");
cmd_AddParm(ts, "-path", CMD_LIST, CMD_OPTIONAL, "dir/file path");
cmd_AddParm(ts, "-human", CMD_FLAG, CMD_OPTIONAL, "human-readable listing");
cmd_CreateAlias(ts, "lq");
- ts = cmd_CreateSyntax("diskfree", DiskFreeCmd, NULL,
+ ts = cmd_CreateSyntax("diskfree", DiskFreeCmd, NULL, 0,
"show server disk space usage");
cmd_AddParm(ts, "-path", CMD_LIST, CMD_OPTIONAL, "dir/file path");
cmd_AddParm(ts, "-human", CMD_FLAG, CMD_OPTIONAL, "human-readable listing");
cmd_CreateAlias(ts, "df");
- ts = cmd_CreateSyntax("quota", QuotaCmd, NULL, "show volume quota usage");
+ ts = cmd_CreateSyntax("quota", QuotaCmd, NULL, 0, "show volume quota usage");
cmd_AddParm(ts, "-path", CMD_LIST, CMD_OPTIONAL, "dir/file path");
- ts = cmd_CreateSyntax("lsmount", ListMountCmd, NULL, "list mount point");
+ ts = cmd_CreateSyntax("lsmount", ListMountCmd, NULL, 0, "list mount point");
cmd_AddParm(ts, "-dir", CMD_LIST, 0, "directory");
- ts = cmd_CreateSyntax("mkmount", MakeMountCmd, NULL, "make mount point");
+ ts = cmd_CreateSyntax("mkmount", MakeMountCmd, NULL, 0, "make mount point");
cmd_AddParm(ts, "-dir", CMD_SINGLE, 0, "directory");
cmd_AddParm(ts, "-vol", CMD_SINGLE, 0, "volume name");
cmd_AddParm(ts, "-cell", CMD_SINGLE, CMD_OPTIONAL, "cell name");
"don't check name with VLDB");
#if defined(AFS_CACHE_BYPASS)
- ts = cmd_CreateSyntax("bypassthreshold", BypassThresholdCmd, 0,
+ ts = cmd_CreateSyntax("bypassthreshold", BypassThresholdCmd, NULL, 0,
"get/set cache bypass file size threshold");
cmd_AddParm(ts, "-size", CMD_SINGLE, CMD_OPTIONAL, "file size");
#endif
*/
- ts = cmd_CreateSyntax("rmmount", RemoveMountCmd, NULL, "remove mount point");
+ ts = cmd_CreateSyntax("rmmount", RemoveMountCmd, NULL, 0, "remove mount point");
cmd_AddParm(ts, "-dir", CMD_LIST, 0, "directory");
- ts = cmd_CreateSyntax("checkservers", CheckServersCmd, NULL,
+ ts = cmd_CreateSyntax("checkservers", CheckServersCmd, NULL, 0,
"check local cell's servers");
cmd_AddParm(ts, "-cell", CMD_SINGLE, CMD_OPTIONAL, "cell to check");
cmd_AddParm(ts, "-all", CMD_FLAG, CMD_OPTIONAL, "check all cells");
cmd_AddParm(ts, "-interval", CMD_SINGLE, CMD_OPTIONAL,
"seconds between probes");
- ts = cmd_CreateSyntax("checkvolumes", CheckVolumesCmd, NULL,
+ ts = cmd_CreateSyntax("checkvolumes", CheckVolumesCmd, NULL, 0,
"check volumeID/name mappings");
cmd_CreateAlias(ts, "checkbackups");
- ts = cmd_CreateSyntax("setcachesize", SetCacheSizeCmd, NULL,
+ ts = cmd_CreateSyntax("setcachesize", SetCacheSizeCmd, NULL, 0,
"set cache size");
cmd_AddParm(ts, "-blocks", CMD_SINGLE, CMD_OPTIONAL,
"size in 1K byte blocks (0 => reset)");
cmd_AddParm(ts, "-reset", CMD_FLAG, CMD_OPTIONAL,
"reset size back to boot value");
- ts = cmd_CreateSyntax("getcacheparms", GetCacheParmsCmd, NULL,
+ ts = cmd_CreateSyntax("getcacheparms", GetCacheParmsCmd, NULL, 0,
"get cache usage info");
cmd_AddParm(ts, "-files", CMD_FLAG, CMD_OPTIONAL, "Show cach files used as well");
cmd_AddParm(ts, "-excessive", CMD_FLAG, CMD_OPTIONAL, "excessively verbose cache stats");
- ts = cmd_CreateSyntax("listcells", ListCellsCmd, NULL,
+ ts = cmd_CreateSyntax("listcells", ListCellsCmd, NULL, 0,
"list configured cells");
cmd_AddParm(ts, "-numeric", CMD_FLAG, CMD_OPTIONAL, "addresses only");
- ts = cmd_CreateSyntax("listaliases", ListAliasesCmd, NULL,
- "list configured cell aliases");
+ cmd_CreateSyntax("listaliases", ListAliasesCmd, NULL, 0,
+ "list configured cell aliases");
- ts = cmd_CreateSyntax("setquota", SetQuotaCmd, NULL, "set volume quota");
+ ts = cmd_CreateSyntax("setquota", SetQuotaCmd, NULL, 0, "set volume quota");
cmd_AddParm(ts, "-path", CMD_SINGLE, CMD_OPTIONAL, "dir/file path");
cmd_AddParm(ts, "-max", CMD_SINGLE, 0, "max quota in kbytes");
#ifdef notdef
#endif
cmd_CreateAlias(ts, "sq");
- ts = cmd_CreateSyntax("newcell", NewCellCmd, NULL, "configure new cell");
+ ts = cmd_CreateSyntax("newcell", NewCellCmd, NULL, 0, "configure new cell");
cmd_AddParm(ts, "-name", CMD_SINGLE, 0, "cell name");
cmd_AddParm(ts, "-servers", CMD_LIST, CMD_REQUIRED, "primary servers");
cmd_AddParm(ts, "-linkedcell", CMD_SINGLE, CMD_OPTIONAL,
"linked cell name");
- ts = cmd_CreateSyntax("newalias", NewAliasCmd, NULL,
+ ts = cmd_CreateSyntax("newalias", NewAliasCmd, NULL, 0,
"configure new cell alias");
cmd_AddParm(ts, "-alias", CMD_SINGLE, 0, "alias name");
cmd_AddParm(ts, "-name", CMD_SINGLE, 0, "real name of cell");
"cell's vldb server port");
#endif
- ts = cmd_CreateSyntax("whichcell", WhichCellCmd, NULL, "list file's cell");
+ ts = cmd_CreateSyntax("whichcell", WhichCellCmd, NULL, 0, "list file's cell");
cmd_AddParm(ts, "-path", CMD_LIST, CMD_OPTIONAL, "dir/file path");
- ts = cmd_CreateSyntax("whereis", WhereIsCmd, NULL, "list file's location");
+ ts = cmd_CreateSyntax("whereis", WhereIsCmd, NULL, 0, "list file's location");
cmd_AddParm(ts, "-path", CMD_LIST, CMD_OPTIONAL, "dir/file path");
- ts = cmd_CreateSyntax("wscell", WSCellCmd, NULL, "list workstation's cell");
+ cmd_CreateSyntax("wscell", WSCellCmd, NULL, 0, "list workstation's cell");
/*
ts = cmd_CreateSyntax("primarycell", PrimaryCellCmd, NULL, "obsolete (listed primary cell)");
*/
- /* set cache monitor host address */
- ts = cmd_CreateSyntax("monitor", MonitorCmd, NULL, (char *)CMD_HIDDEN);
+ ts = cmd_CreateSyntax("monitor", MonitorCmd, NULL, CMD_HIDDEN, "set cache monitor host address");
cmd_AddParm(ts, "-server", CMD_SINGLE, CMD_OPTIONAL,
"host name or 'off'");
cmd_CreateAlias(ts, "mariner");
- ts = cmd_CreateSyntax("getcellstatus", GetCellCmd, NULL, "get cell status");
+ ts = cmd_CreateSyntax("getcellstatus", GetCellCmd, NULL, 0, "get cell status");
cmd_AddParm(ts, "-cell", CMD_LIST, 0, "cell name");
- ts = cmd_CreateSyntax("setcell", SetCellCmd, NULL, "set cell status");
+ ts = cmd_CreateSyntax("setcell", SetCellCmd, NULL, 0, "set cell status");
cmd_AddParm(ts, "-cell", CMD_LIST, 0, "cell name");
cmd_AddParm(ts, "-suid", CMD_FLAG, CMD_OPTIONAL, "allow setuid programs");
cmd_AddParm(ts, "-nosuid", CMD_FLAG, CMD_OPTIONAL,
"disallow setuid programs");
- ts = cmd_CreateSyntax("flushvolume", FlushVolumeCmd, NULL,
+ ts = cmd_CreateSyntax("flushvolume", FlushVolumeCmd, NULL, 0,
"flush all data in volume");
cmd_AddParm(ts, "-path", CMD_LIST, CMD_OPTIONAL, "dir/file path");
- cmd_CreateSyntax("flushall", FlushAllVolumesCmd, NULL, "flush all data from the cache");
+ cmd_CreateSyntax("flushall", FlushAllVolumesCmd, NULL, 0, "flush all data from the cache");
- ts = cmd_CreateSyntax("sysname", SysNameCmd, NULL,
+ ts = cmd_CreateSyntax("sysname", SysNameCmd, NULL, 0,
"get/set sysname (i.e. @sys) value");
cmd_AddParm(ts, "-newsys", CMD_LIST, CMD_OPTIONAL, "new sysname");
- ts = cmd_CreateSyntax("exportafs", ExportAfsCmd, NULL,
+ ts = cmd_CreateSyntax("exportafs", ExportAfsCmd, NULL, 0,
"enable/disable translators to AFS");
cmd_AddParm(ts, "-type", CMD_SINGLE, 0, "exporter name");
cmd_AddParm(ts, "-start", CMD_SINGLE, CMD_OPTIONAL,
"enable callbacks to get creds from new clients (on | off)");
- ts = cmd_CreateSyntax("storebehind", StoreBehindCmd, NULL,
+ ts = cmd_CreateSyntax("storebehind", StoreBehindCmd, NULL, 0,
"store to server after file close");
cmd_AddParm(ts, "-kbytes", CMD_SINGLE, CMD_OPTIONAL,
"asynchrony for specified names");
cmd_AddParm(ts, "-verbose", CMD_FLAG, CMD_OPTIONAL, "show status");
cmd_CreateAlias(ts, "sb");
- ts = cmd_CreateSyntax("setcrypt", SetCryptCmd, NULL,
+ ts = cmd_CreateSyntax("setcrypt", SetCryptCmd, NULL, 0,
"set cache manager encryption flag");
cmd_AddParm(ts, "-crypt", CMD_SINGLE, 0, "on or off");
- ts = cmd_CreateSyntax("getcrypt", GetCryptCmd, NULL,
+ cmd_CreateSyntax("getcrypt", GetCryptCmd, NULL, 0,
"get cache manager encryption flag");
- ts = cmd_CreateSyntax("rxstatproc", RxStatProcCmd, NULL,
+ ts = cmd_CreateSyntax("rxstatproc", RxStatProcCmd, NULL, 0,
"Manage per process RX statistics");
cmd_AddParm(ts, "-enable", CMD_FLAG, CMD_OPTIONAL, "Enable RX stats");
cmd_AddParm(ts, "-disable", CMD_FLAG, CMD_OPTIONAL, "Disable RX stats");
cmd_AddParm(ts, "-clear", CMD_FLAG, CMD_OPTIONAL, "Clear RX stats");
- ts = cmd_CreateSyntax("rxstatpeer", RxStatPeerCmd, NULL,
+ ts = cmd_CreateSyntax("rxstatpeer", RxStatPeerCmd, NULL, 0,
"Manage per peer RX statistics");
cmd_AddParm(ts, "-enable", CMD_FLAG, CMD_OPTIONAL, "Enable RX stats");
cmd_AddParm(ts, "-disable", CMD_FLAG, CMD_OPTIONAL, "Disable RX stats");
cmd_AddParm(ts, "-clear", CMD_FLAG, CMD_OPTIONAL, "Clear RX stats");
- ts = cmd_CreateSyntax("setcbaddr", CallBackRxConnCmd, NULL, "configure callback connection address");
+ ts = cmd_CreateSyntax("setcbaddr", CallBackRxConnCmd, NULL, 0, "configure callback connection address");
cmd_AddParm(ts, "-addr", CMD_SINGLE, CMD_OPTIONAL, "host name or address");
/* try to find volume location information */
- ts = cmd_CreateSyntax("getfid", GetFidCmd, NULL,
+ ts = cmd_CreateSyntax("getfid", GetFidCmd, NULL, 0,
"get fid for file(s)");
cmd_AddParm(ts, "-path", CMD_LIST, CMD_OPTIONAL, "dir/file path");
- ts = cmd_CreateSyntax("discon", DisconCmd, NULL,
+ ts = cmd_CreateSyntax("discon", DisconCmd, NULL, 0,
"disconnection mode");
cmd_AddParm(ts, "-mode", CMD_SINGLE, CMD_REQUIRED, "offline | online");
cmd_AddParm(ts, "-policy", CMD_SINGLE, CMD_OPTIONAL, "client | server");
cmd_AddParm(ts, "-force", CMD_FLAG, CMD_OPTIONAL, "Force reconnection, despite any synchronization issues.");
cmd_AddParm(ts, "-uid", CMD_SINGLE, CMD_OPTIONAL, "Numeric UID of user whose tokens to use at reconnect.");
- ts = cmd_CreateSyntax("nukenfscreds", NukeNFSCredsCmd, NULL, "nuke credentials for NFS client");
+ ts = cmd_CreateSyntax("nukenfscreds", NukeNFSCredsCmd, NULL, 0, "nuke credentials for NFS client");
cmd_AddParm(ts, "-addr", CMD_SINGLE, 0, "host name or address");
- ts = cmd_CreateSyntax("uuid", UuidCmd, NULL, "manage the UUID for the cache manager");
+ ts = cmd_CreateSyntax("uuid", UuidCmd, NULL, 0, "manage the UUID for the cache manager");
cmd_AddParm(ts, "-generate", CMD_FLAG, CMD_REQUIRED, "generate a new UUID");
- ts = cmd_CreateSyntax("precache", PreCacheCmd, 0,
+ ts = cmd_CreateSyntax("precache", PreCacheCmd, NULL, 0,
"set precache size");
cmd_AddParm(ts, "-blocks", CMD_SINGLE, CMD_OPTIONAL,
"size in 1K byte blocks (0 => disable)");
"%s: You do not have the required rights to do this operation\n",
pn);
break;
+ case ESRCH: /* hack: pioctls stole ESRCH for cell name not available errors. */
+ fprintf(stderr, "%s: Cell name not recognized.\n", pn);
+ break;
default:
if (filename)
fprintf(stderr, "%s:'%s'", pn, filename);
out = (struct sprefinfo *)blob.out;
for (i = 0; i < out->num_servers; i++) {
afs_int32 addr;
- char tbuffer[32];
+ char tbuffer[20];
addr = ntohl(out->servers[i].server.s_addr);
- sprintf(tbuffer, "%d.%d.%d.%d", (addr >> 24) & 0xff,
+ snprintf(tbuffer, sizeof(tbuffer), "%d.%d.%d.%d", (addr >> 24) & 0xff,
(addr >> 16) & 0xff, (addr >> 8) & 0xff, addr & 0xff);
printf("%-50s\n", tbuffer);
}
code = pioctl(parent_dir, VIOC_AFS_FLUSHMOUNT, &blob, 1);
free(last_component);
- free(parent_dir);
if (code != 0) {
if (errno == EINVAL) {
}
error = 1;
}
+ free(parent_dir);
}
return error;
}