示例#1
0
static void convert_board(struct oldboardheader *oldbrd, struct boardheader *brd)
{
    FILE *fp3;
    char buf[1024];
    int len;
    char *ptr;

    if ((fp3 = fopen("0Announce/.Search", "r")) == NULL) {
        printf("can't open .Search file!");
        exit(0);
    }

    len = strlen(oldbrd->filename);
    while (fgets(buf, sizeof(buf), fp3) != NULL) {
        if (strncasecmp(buf, oldbrd->filename, len) == 0 && buf[len] == ':' && (ptr = strtok(&buf[len + 1], "\t\n")) != NULL) {
            strncpy(brd->ann_path, ptr + 8, 128);       //dont'save groups/
            break;
        }
    }
    fclose(fp3);
    strcpy(brd->filename, oldbrd->filename);
    strncpy(brd->BM, oldbrd->BM, BM_LEN);
	brd->BM[BM_LEN-1]='\0';
    convert_flag(oldbrd, brd);
    convert_title(oldbrd, brd);
    convert_permission(oldbrd, brd);
    brd->createtime=time(0);
}
示例#2
0
文件: bit.C 项目: SinaC/OldMud
const char *flag_string_init( struct flag_type *flag_table, long bits ) {
  static char buf[512];
  
  int countBit = count_bit( bits );
  int countWord = 0;
  buf[0] = '\0';
  
  for (int flag = 0; flag_table[flag].name != NULL; flag++) {

    if ( !is_stat_init( flag_table ) && IS_SET(bits, flag_table[flag].bit) ) {
	
      strcat( buf, " " );
      strcat( buf, flag_table[flag].name );
      countWord++;
    }
    else if ( flag_table[flag].bit == bits ) {

      strcat( buf, " " );
      strcat( buf, flag_table[flag].name );
      countWord = countBit; // artifically set countWord to avoid entering bug test
      break;
    }
  }
  if ( countWord != countBit )
    bug("Flag_String_Init: invalid number of word: %d [%s], number of bits %d [flag = %ld (%s)] [table: %s]",
	countWord, buf[0] != 0 ? buf+1: "none", countBit, 
	bits, convert_flag( bits), get_flag_table_name(flag_table) );
  return (buf[0] != '\0') ? buf+1 : "none";
}
示例#3
0
文件: lib.c 项目: ftrvxmtrx/metaquake
static q2cvar_t *q2_cvar_get (const char *name, const char *value, int q2_flags) {
  con_var_t *var = con_var_find(name);

  if (var && (var->callback || var->userdata)) {
    g_critical("console variable \"%s\" is already registered", name);
    return NULL;
  }

  uint32_t flags = 0;

#define convert_flag(q2_flag, flag)             \
  if (q2_flags & q2_flag) {                     \
    flags |= flag;                              \
  }

  convert_flag(Q2CVAR_ARCHIVE,    CON_OBJ_FL_SAVE);
  convert_flag(Q2CVAR_USERINFO,   0); // FIXME
  convert_flag(Q2CVAR_SERVERINFO, CON_OBJ_FL_SERVER);
  convert_flag(Q2CVAR_NOSET,      CON_OBJ_FL_READONLY);
  convert_flag(Q2CVAR_LATCH,      0); // FIXME
  convert_flag(Q2CVAR_CHEAT,      0); // FIXME

#undef convert_flag

  if (!(var = con_var_get(name, value, NULL, flags))) {
    return NULL;
  }

  q2cvar_t *q2_var = mem_alloc(quake2_mem_pool, sizeof(*q2_var));

  q2_var->name = var->name;
  q2_var->as_string = var->s;
  q2_var->latched_string = NULL; // FIXME
  q2_var->flags = q2_flags;
  q2_var->modified = false; // FIXME
  q2_var->as_float = var->f;

  var->callback = quake2_con_var_updated;
  var->userdata = q2_var;

  return q2_var;
}
示例#4
0
文件: methods.c 项目: andreiw/polaris
/*
 * inParams - CCIMPropertyList pointer that dereferences to a list of not less
 * than 5 CCIMProperty values. The number of CCIMProperty values must be a
 * multiple of 5.
 *
 * The file will contain at least one line in the following format:
 *	part tag flag start_sect part_size
 * Values for partition, tag, flag, starting sector and partition size are
 * taken from inParams.
 */
static CIMBool
build_fmt_file(char *fmt_file, CCIMPropertyList *params)
{
	ulong_t	*vals;
	int	cnt = 0;
	FILE	*fp;
	int	error;
	int	i;

	if (params == NULL) {
	    util_handleError(INVOKE_METHOD, CIM_ERR_INVALID_PARAMETER,
		NULL, NULL, &error);
	    return (cim_false);
	}

	vals = cim_decodeUint32Array(get_prop_val(params->mDataObject), &cnt);

	if (cnt == 0 || (cnt % 5) != 0) {
	    util_handleError(INVOKE_METHOD, CIM_ERR_INVALID_PARAMETER,
		NULL, NULL, &error);
	    return (cim_false);
	}

	(void) tmpnam(fmt_file);

	/* Open the temporary file for writing */
	if ((fp = util_openFile(fmt_file, "w")) == NULL) {
	    util_handleError(INVOKE_METHOD, CIM_ERR_FAILED, NULL,
		NULL, &error);
	    return (cim_false);
	}

	/*
	 * Build a data file for the fmthard command.
	 * Each line of the file consists of:
	 *
	 * part_num tag flag start_sector partition_size
	 *
	 * The fmthard command requires the starting sector fall on
	 * a cylinder boundry.
	 */
	for (i = 0; i < cnt; i += 5) {
	    char	line_buf[DATALEN];
	    char	flag_buf[DATALEN];

	    convert_flag(vals[i + 2], flag_buf, sizeof (flag_buf));

	    (void) snprintf(line_buf, sizeof (line_buf),
		"%lu %lu %s %lu %lu\n",
		vals[i], vals[i + 1], flag_buf, vals[i + 3], vals[i + 4]);

	    /* Write the line of parameters to the fdisk_file */
	    if ((fputs(line_buf, fp)) == EOF) {
		util_handleError(INVOKE_METHOD, CIM_ERR_INVALID_PARAMETER,
		    NULL, NULL, &error);
		(void) util_closeFile(fp, fmt_file);
		return (cim_false);
	    }
	}

	if ((util_closeFile(fp, fmt_file)) == 0) {
	    return (cim_false);
	}

	/* Caller must delete the file */
	return (cim_true);
}