Bag_error BAG_killpair_bysecond (long second) { long first; if (BAG_getfirst (&first, second) == NO_SUCH_PAIR) return NO_SUCH_PAIR; removefromlist (&lookupbyfirst[hash (first)], first); removefromlist (&lookupbysecond[hash (second)], first); return NO_ERROR; }
void invalidate() { Node* n = removefromlist(tail); if (n != 0) { m.erase(n->key); delete n; } }
void setused(Node* n) { if (n == 0 || n == head) { return; } if (head == 0) { createNewHead(n); } else { removefromlist(n); insertathead(n); } }
int main(int argc, char *argv[]) { int index; struct sigaction sa; int c; char *p = strrchr(argv[0], '/'); if (p == NULL) p = argv[0]; else p++; pname = p; (void) setlocale(LC_ALL, ""); #if !defined(TEXT_DOMAIN) /* Should be defined by cc -D */ #define TEXT_DOMAIN "SYS_TEST" /* Use this only if it weren't */ #endif (void) textdomain(TEXT_DOMAIN); if (getuid() != 0) die(gettext("must be root to run this program\n")); /* * Handle normal termination signals that may be received. */ sa.sa_handler = SIG_IGN; sa.sa_flags = 0; (void) sigemptyset(&sa.sa_mask); (void) sigaction(SIGHUP, &sa, NULL); (void) sigaction(SIGINT, &sa, NULL); (void) sigaction(SIGQUIT, &sa, NULL); (void) sigaction(SIGTERM, &sa, NULL); /* * To make sure persistent state gets removed. */ sa.sa_handler = cleanup_on_exit; sa.sa_flags = 0; (void) sigemptyset(&sa.sa_mask); (void) sigaction(SIGSEGV, &sa, NULL); (void) sigaction(SIGILL, &sa, NULL); (void) sigaction(SIGABRT, &sa, NULL); (void) sigaction(SIGBUS, &sa, NULL); if (strcmp(pname, CONSDAEMON) == 0) { fallbackdaemon(); return (E_SUCCESS); } if (argc == 1) display++; else { while ((c = getopt(argc, argv, "adp")) != EOF) { switch (c) { case 'a': addflag++; break; case 'd': deleteflag++; break; case 'p': persist++; break; default: (void) fprintf(stderr, gettext(usage)); exit(E_USAGE); /*NOTREACHED*/ } } } if (display) { getconsole(); return (E_SUCCESS); } if (addflag && deleteflag) { (void) fprintf(stderr, gettext(usage)); return (E_ERROR); } if (addflag) { if (optind == argc) { (void) fprintf(stderr, gettext(usage)); return (E_ERROR); } /* separately check every device path specified */ for (index = optind; index < argc; index++) { if (verifyarg(argv[index], addflag)) return (E_ERROR); } for (index = optind; index < argc; index++) { setaux(argv[index]); if (persist) addtolist(argv[index]); } /* * start/restart daemon based on the auxilary * consoles at this time. */ setfallback(argv); return (E_SUCCESS); } else if (deleteflag) { if (optind == argc) { (void) fprintf(stderr, gettext(usage)); return (E_ERROR); } /* separately check every device path specified */ for (index = optind; index < argc; index++) { if (verifyarg(argv[index], 0)) return (E_ERROR); } for (index = optind; index < argc; index++) { unsetaux(argv[index]); if (persist && deleteflag) removefromlist(argv[index]); } /* * kill off daemon and restart with * new list of auxiliary consoles */ setfallback(argv); return (E_SUCCESS); } else if (persist) { if (optind < argc) { (void) fprintf(stderr, gettext(usage)); return (E_ERROR); } persistlist(); return (E_SUCCESS); } else { (void) fprintf(stderr, gettext(usage)); return (E_ERROR); } } /* main */