/** * Clear removes the node starting from the head. * The mObj should be a valid object. This would be the one that would be used * for the object finish. The mObj for the data struct creation might be * different from the mObj for the packet containers. * @note If flexibility is required then the remove function needs to * register. * @param dsPtr * @param mObj The memory object that will be used for packet container finish. * @return The \c error-code if any error during memory operations else * success is returned. */ inline genErr_t ds_clear (ds_dsBase * dsPtr, bs_mmodCls mObj) { ds_packetContainer *tData = NULL; validateObj (dsPtr); while (!ds_isEmpty (dsPtr)) { tData = ds_remove (dsPtr, 0, DS_HEAD); if (mObj != NULL) { ds_packetContainerFin (tData); bs_freeMem (mObj, (void **) &tData); } } return SUCCESS; }
int main(int argc, char *argv[]) { ex_t rc = EX_OK; bfpath *bfp; bfpath_mode mode; fBogoutil = true; signal_setup(); /* setup to catch signals */ atexit(bf_exit); progtype = build_progtype(progname, DB_TYPE); set_today(); /* compute current date for token age */ process_arglist(argc, argv); process_config_files(false, longopts_bogoutil); /* need to read lock sizes */ /* Extra or missing parameters */ if (flag != M_WORD && flag != M_LIST_LOGFILES && argc != optind) { fprintf(stderr, "Missing or extraneous argument.\n"); usage(stderr); exit(EX_ERROR); } bfp = bfpath_create(ds_file); if (bogohome == NULL) set_bogohome( "." ); /* set default */ bfpath_set_bogohome(bfp); mode = get_mode(flag); if (bfpath_check_mode(bfp, mode)) { if (bfp->isdir) bfpath_set_filename(bfp, WORDLIST); } if (!bfpath_check_mode(bfp, mode)) { fprintf(stderr, "Can't open wordlist '%s'\n", bfp->filepath); exit(EX_ERROR); } errno = 0; /* clear error status */ switch (flag) { case M_RECOVER: ds_init(bfp); rc = ds_recover(bfp, false); break; case M_CRECOVER: ds_init(bfp); rc = ds_recover(bfp, true); break; case M_CHECKPOINT: ds_init(bfp); rc = ds_checkpoint(bfp); break; case M_LIST_LOGFILES: dsm_init(bfp); rc = ds_list_logfiles(bfp, argc - optind, argv + optind); break; case M_PURGELOGS: ds_init(bfp); rc = ds_purgelogs(bfp); break; case M_REMOVEENV: dsm_init(bfp); rc = ds_remove(bfp); break; case M_VERIFY: dsm_init(bfp); rc = ds_verify(bfp); break; case M_LEAFPAGES: { u_int32_t c; dsm_init(bfp); c = ds_leafpages(bfp); if (c == 0xffffffff) { fprintf(stderr, "%s: error getting leaf page count.\n", ds_file); rc = EX_ERROR; } else if (c == 0) { puts("UNKNOWN"); } else { printf("%lu\n", (unsigned long)c); } } break; case M_PAGESIZE: { u_int32_t s; dsm_init(bfp); s = ds_pagesize(bfp); if (s == 0xffffffff) { fprintf(stderr, "%s: error getting page size.\n", ds_file); } else if (s == 0) { puts("UNKNOWN"); } else { printf("%lu\n", (unsigned long)s); } } break; case M_DUMP: rc = dump_wordlist(bfp); break; case M_LOAD: rc = load_wordlist(bfp) ? EX_ERROR : EX_OK; break; case M_MAINTAIN: maintain = true; rc = maintain_wordlist_file(bfp); break; case M_WORD: argc -= optind; argv += optind; rc = display_words(bfp, argc, argv, prob); break; case M_HIST: rc = histogram(bfp); break; case M_ROBX: rc = get_robx(bfp); break; case M_NONE: default: /* should have been handled above */ abort(); break; } bfpath_free(bfp); return rc; }
/** * Remove packet. * The packet container that is removed is returned. Memory for this packet * container needs to be freed elsewhere. * @param dlPtr * @param node. The node that needs to be removed. * @return The packet container is returned. */ ds_packetContainer * ds_dl_remove (ds_dlist dlPtr, ds_packetContainer * node, ds_e_headTail htail) { return ds_remove (&dlPtr->base, node, htail); }
/** * Remove packet. * The packet container that is removed is returned. Memory for this packet * container needs to be freed elsewhere. * @param cqPtr * @param node. The node that needs to be removed. * @return The packet container is returned. */ ds_packetContainer * ds_cq_remove (ds_cqueue cqPtr) { return ds_remove (&cqPtr->base, 0, DS_HEAD); }
/** * Remove packet. * The packet container that is removed is returned. Memory for this packet * container needs to be freed elsewhere. * @param quPtr * @return The packet container is returned. */ ds_packetContainer * ds_qu_remove (ds_queue quPtr) { return ds_remove (&quPtr->base, 0, DS_HEAD); }
/** * Remove packet. * The packet container that is removed is returned. Memory for this packet * container needs to be freed elsewhere. * @param stPtr * @return The packet container is returned. */ ds_packetContainer * ds_st_remove (ds_stack stPtr) { return ds_remove (&stPtr->base, 0, DS_TAIL); }
/** * Remove packet. * The packet container that is removed is returned. Memory for this packet * container needs to be freed elsewhere. * @param cdPtr * @return The packet container is returned. */ ds_packetContainer * ds_cd_remove (ds_cdlist cdPtr, ds_packetContainer * node, ds_e_headTail htail) { return ds_remove (&cdPtr->base, node, htail); }