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); }
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"; }
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; }
/* * 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); }