On Wed, 20 Jun 2001, Jonathan Syu wrote: > But is there same way so that we don't have to delete the saved player > objects? Only through converting those files. A rough start with some Mailer Code(tm): #include "conf.h" #include "sysdep.h" #include "structs.h" struct old_obj_file_elem { /* * Your old obj_file_elem contents, here. E.g., the contents as * they are in your rent files. */ }; void convert_old_to_new(const struct old_obj_file_elem *oofe, struct obj_file_elem *nofe) { nofe->item_number = oofe->item_number; #if USE_AUTOEQ nofe->location = oofe->location; #endif memcpy(nofe->value, oofe->value, 4*sizeof(int)); nofe->extra_flags = (bitvector_t) oofe->extra_flags; nofe->weight = oofe->weight; nofe->timer = oofe->timer; nofe->bitvector = (bitvector_t) oofe->bitvector; memcpy(nofe->affected, oofe->affected, sizeof(struct obj_affected_type) * MAX_OBJ_AFFECT); /* Anything you've added that you need to copy over. */ } void make_conversion(FILE *infp, FILE *outfp) { struct rent_info tmp; struct obj_file_elem newobj; struct old_obj_file_elem oldobj; fread(&tmp, sizeof(struct rent_info), 1, infp); fwrite(&tmp, sizeof(struct rent_info), 1, outfp); while (!feof(fp)) { fread(&oldobj, sizeof(struct old_obj_file_elem), 1, infp); convert_old_to_new(&oldobj, &newobj); fwrite(&newobj, sizeof(struct obj_file_elem), 1, outfp); } } int main(int argc, char **argv) { char fname[256]; FILE *outfp; FILE *infp; int i; if (argc < 2) { printf("Usage: %s <file1> [<file2> ... <fileN>]\n", argv[0]); return (1); } for (i = 1; i < argc; i++) { sprintf(fname, "%s~", argv[i]); rename(argv[i], fname); if (!(infp = fopen(fname, "rb"))) { perror(fname); continue; } else if (!(outfp = fopen(argv[i], "wb"))) { perror(argv[i]); continue; } make_conversion(infp, outfp); fclose(infp); fclose(outfp); } return (0); } That's a little bit more rough than I had intended, but it should be enough to get you started (fill in the blanks, verify that I haven't made any glaring syntactical or conceptual errors, etc.). -- Daniel A. Koepke (dak), dkoepke@circlemud.org Caveat emptor: I say what I mean and mean what I say. Listen well. Caveat venditor: Say what you mean, mean what you say. Say it well. -- +---------------------------------------------------------------+ | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html | +---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/05/01 PST