Пример #1
0
/**
 * 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;
}
Пример #2
0
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;
}
Пример #3
0
/**
 * 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);
}
Пример #4
0
/**
 * 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);
}
Пример #5
0
/**
 * 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);
}
Пример #6
0
/**
 * 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);
}
Пример #7
0
/**
 * 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);
}