comparison src/main.c @ 16:8bcb6a2d3def

CLI version: use switch statement instead of generic if else... may give us performance benefit??
author Paper <37962225+mrpapersonic@users.noreply.github.com>
date Fri, 11 Mar 2022 03:41:20 -0500
parents a4e604789e2e
children d873a04165f9
comparison
equal deleted inserted replaced
15:69e9cd8817a7 16:8bcb6a2d3def
18 }; 18 };
19 19
20 char* strremove(char* str, const char* sub) { 20 char* strremove(char* str, const char* sub) {
21 size_t len = strlen(sub); 21 size_t len = strlen(sub);
22 if (len > 0) { 22 if (len > 0) {
23 char *p = str; 23 char* p = str;
24 while ((p = strstr(p, sub)) != NULL) { 24 while ((p = strstr(p, sub)) != NULL) {
25 memmove(p, p + len, strlen(p + len) + 1); 25 memmove(p, p + len, strlen(p + len) + 1);
26 } 26 }
27 } 27 }
28 return str; 28 return str;
122 fseek(input_file, 0x46, SEEK_SET); 122 fseek(input_file, 0x46, SEEK_SET);
123 printf("Input file version: %d\n", fgetc(input_file)); 123 printf("Input file version: %d\n", fgetc(input_file));
124 fseek(input_file, 0x18, SEEK_SET); 124 fseek(input_file, 0x18, SEEK_SET);
125 int file_version = fgetc(input_file); 125 int file_version = fgetc(input_file);
126 printf("Input file type: "); 126 printf("Input file type: ");
127 if (file_version == 0xEF) { 127 switch (file_version) {
128 printf("VEGAS Pro\n\n"); 128 case 0xEF:
129 } else if (file_version == 0xF6) { 129 printf("VEGAS Pro\n\n");
130 printf("Movie Studio\n\n"); 130 break;
131 } else { 131 case 0xF6:
132 printf("Unknown\n\n"); 132 printf("Movie Studio\n\n");
133 break;
134 default:
135 printf("Unknown\n\n");
136 break;
133 } 137 }
134 int* ptr = &args.version; 138 int* ptr = &args.version;
135 if (args.version == -1) { 139 if (args.version == -1) {
136 printf("What version of VEGAS would you like to spoof to?: "); 140 printf("What version of VEGAS would you like to spoof to?: ");
137 fflush(stdout); 141 fflush(stdout);
155 strncat(temp, args.type, 3); 159 strncat(temp, args.type, 3);
156 strncpy(args.output, temp, 255); 160 strncpy(args.output, temp, 255);
157 } 161 }
158 if (strcmp(args.type, "veg") == 0) { 162 if (strcmp(args.type, "veg") == 0) {
159 const unsigned char T[] = {0xEF, 0x29, 0xC4, 0x46, 0x4A, 0x90, 0xD2, 0x11, 0x87, 0x22, 0x00, 0xC0, 0x4F, 0x8E, 0xDB, 0x8A}; 163 const unsigned char T[] = {0xEF, 0x29, 0xC4, 0x46, 0x4A, 0x90, 0xD2, 0x11, 0x87, 0x22, 0x00, 0xC0, 0x4F, 0x8E, 0xDB, 0x8A};
160 for (option_index = 0; option_index <= 15; option_index++) { 164 for (option_index = 0; option_index <= 15; option_index++) { /* this line is repeated, but it's probably best to just leave it be. */
161 magic[option_index] = T[option_index]; 165 magic[option_index] = T[option_index];
162 } 166 }
163 } else if (strcmp(args.type, "vf") == 0) { 167 } else if (strcmp(args.type, "vf") == 0) {
164 const unsigned char T[] = {0xF6, 0x1B, 0x3C, 0x53, 0x35, 0xD6, 0xF3, 0x43, 0x8A, 0x90, 0x64, 0xB8, 0x87, 0x23, 0x1F, 0x7F}; 168 const unsigned char T[] = {0xF6, 0x1B, 0x3C, 0x53, 0x35, 0xD6, 0xF3, 0x43, 0x8A, 0x90, 0x64, 0xB8, 0x87, 0x23, 0x1F, 0x7F};
165 for (option_index = 0; option_index <= 15; option_index++) { 169 for (option_index = 0; option_index <= 15; option_index++) {
168 } else { 172 } else {
169 fprintf(stderr, "Type %s is invalid!", args.type); 173 fprintf(stderr, "Type %s is invalid!", args.type);
170 return 1; 174 return 1;
171 } 175 }
172 copy_file(args.input, args.output); 176 copy_file(args.input, args.output);
173 #ifdef _WIN32 177 #ifdef _WIN32 /* disallowed characters in filenames */
174 if (strcspn(args.input, "<>:\"/\\|?*") == strlen(args.input)+1) { 178 if (strcspn(args.input, "<>:\"/\\|?*") == strlen(args.input)+1) {
175 #elif defined(__unix__) 179 #elif defined(__unix__)
176 if (strcspn(args.input, "/") == strlen(args.input)+1) { 180 if (strcspn(args.input, "/") == strlen(args.input)+1) {
177 #else 181 #else
178 if (NULL) { 182 if (NULL) {