#define MACHINE 1
#define GROUP 2
#define ALIAS 3
+#define ALIAS_CHECK 4
+#define FS_ALIASES 5
#define NO_MACHINE ("[NONE]")
}
break;
case ALIAS:
+ case ALIAS_CHECK:
args[ALIAS_NAME] = name;
args[ALIAS_TYPE] = FS_ALIAS_TYPE;
args[ALIAS_TRANS] = "*";
if ((stat = do_mr_query("get_alias", 3, args, StoreInfo, &elem)))
{
- com_err(program_name, stat, " in get_alias.");
+ if (type != ALIAS_CHECK || stat != MR_NO_MATCH)
+ com_err(program_name, stat, " in get_alias.");
return NULL;
}
+ break;
+ case FS_ALIASES:
+ args[ALIAS_NAME] = "*";
+ args[ALIAS_TYPE] = FS_ALIAS_TYPE;
+ args[ALIAS_TRANS] = name;
+ if ((stat = do_mr_query("get_alias", 3, args, StoreInfo, &elem)))
+ {
+ if (stat != MR_NO_MATCH)
+ com_err(program_name, stat, " in get_alias.");
+ return NULL;
+ }
+ break;
}
return QueueTop(elem);
return info[ALIAS_NAME];
}
+static char aliasbuf[256];
+
+static char *PrintFSAliasList(char **info)
+{
+ if (strlen(aliasbuf) == 0)
+ snprintf(aliasbuf, sizeof(aliasbuf), "Aliases: %s", info[ALIAS_NAME]);
+ else
+ {
+ strncat(aliasbuf, ", ", sizeof(aliasbuf));
+ strncat(aliasbuf, info[ALIAS_NAME], sizeof(aliasbuf));
+ }
+}
+
+static char labelbuf[256];
+
+static char *GetFSLabel(char **info)
+{
+ snprintf(labelbuf, sizeof(labelbuf), info[ALIAS_TRANS]);
+}
+
static int fsgCount = 1;
static void PrintFSGMembers(char **info)
static char *PrintFSInfo(char **info)
{
char print_buf[BUFSIZ];
+ struct mqelem *top;
FORMFEED;
sprintf(print_buf, "%20s Filesystem Group: %s", " ", info[FS_NAME]);
Put_message(print_buf);
+ top = GetFSInfo(FS_ALIASES, info[FS_NAME]);
+ if (top != NULL) {
+ *aliasbuf = 0;
+ Loop(top, (void (*)(char **))PrintFSAliasList);
+ Put_message(aliasbuf);
+ FreeQueue(top); /* clean the queue. */
+ }
+
sprintf(print_buf, "Comments: %s", info[FS_COMMENTS]);
Put_message(print_buf);
sprintf(print_buf, MOD_FORMAT, info[FS_MODBY], info[FS_MODTIME],
{
sprintf(print_buf, "%20s Filesystem: %s", " ", info[FS_NAME]);
Put_message(print_buf);
+
+ top = GetFSInfo(FS_ALIASES, info[FS_NAME]);
+ if (top != NULL) {
+ *aliasbuf = 0;
+ Loop(top, (void (*)(char **))PrintFSAliasList);
+ Put_message(aliasbuf);
+ FreeQueue(top); /* clean the queue. */
+ }
+
sprintf(print_buf, "Type: %-40s Machine: %-15s",
info[FS_TYPE], info[FS_MACHINE]);
Put_message(print_buf);
int GetFS(int argc, char **argv)
{
struct mqelem *top;
+ char *fs_label;
+
+ fs_label = argv[1];
+
+ top = GetFSInfo(ALIAS_CHECK, argv[1]);
+ if (top != NULL) {
+ Loop(top, (void (*)(char **))GetFSLabel);
+ fs_label = labelbuf;
+ }
- top = GetFSInfo(LABEL, argv[1]); /* get info. */
+ top = GetFSInfo(LABEL, fs_label); /* get info. */
Loop(top, (void (*)(char **))PrintFSInfo);
FreeQueue(top); /* clean the queue. */
return DM_NORMAL;
SUBMENU("fsgroups", "File System Groups Menu", &fsgroup_menu),
{ GetFSAlias, NULLMENU, 2, {
{"check", "Check An Association"},
- {"name", "alias name : "}
+ {"name", "Alias name: "}
} },
{ CreateFSAlias, NULLMENU, 2, {
{"alias", "Associate with a Filesystem"},
- {"name", "alias name : "},
+ {"name", "Alias name: "},
} },
{ DeleteFSAlias, NULLMENU, 2, {
{"unalias", "Disassociate from a Filesystem"},
- {"name", "alias name : "},
+ {"name", "Alias name: "},
} },
SUBMENU("quotas", "Quota Menu", "a_menu),
/* SIMPLEFUNC("verbose", "Toggle Verbosity of Delete", ToggleVerboseMode), */