/* mktype -- make a node in the type list and initialize to defaults */ void mktype(int deviceid) { struct dev_ent *s, *p; char *tn, *dn; p = NIL; tn = symtab[currtname].name; dn = symtab[deviceid].name; for (s = ftypes; s != NIL ; s = s->next) { if (s->tname == tn && s->device==dn) { fprintf(stderr, "Duplicate device %s for type %s on line %d\n", dn, tn, linectr); exit(1); } p = s; } currtype = s = (struct dev_ent *)malloc(sizeof(struct dev_ent)); if (ftypes != NIL) { p->next = s; } else { ftypes = s; } initattr(s, currtname, deviceid); }
int main(int argc, char *argv[]) { int error = 0, attrnamespace; if (argc < 2) usage(); if (!strcmp(argv[1], "start")) { if (argc != 3) usage(); error = extattrctl(argv[2], UFS_EXTATTR_CMD_START, NULL, 0, NULL); if (error) { perror("extattrctl start"); return (-1); } } else if (!strcmp(argv[1], "stop")) { if (argc != 3) usage(); error = extattrctl(argv[2], UFS_EXTATTR_CMD_STOP, NULL, 0, NULL); if (error) { perror("extattrctl stop"); return (-1); } } else if (!strcmp(argv[1], "enable")) { if (argc != 6) usage(); error = extattr_string_to_namespace(argv[3], &attrnamespace); if (error) { perror("extattrctl enable"); return (-1); } error = extattrctl(argv[2], UFS_EXTATTR_CMD_ENABLE, argv[5], attrnamespace, argv[4]); if (error) { perror("extattrctl enable"); return (-1); } } else if (!strcmp(argv[1], "disable")) { if (argc != 5) usage(); error = extattr_string_to_namespace(argv[3], &attrnamespace); if (error) { perror("extattrctl disable"); return (-1); } error = extattrctl(argv[2], UFS_EXTATTR_CMD_DISABLE, NULL, attrnamespace, argv[4]); if (error) { perror("extattrctl disable"); return (-1); } } else if (!strcmp(argv[1], "initattr")) { argc -= 2; argv += 2; error = initattr(argc, argv); if (error) return (-1); } else if (!strcmp(argv[1], "showattr")) { argc -= 2; argv += 2; error = showattr(argc, argv); if (error) return (-1); } else usage(); return (0); }