mirror of
https://github.com/reactos/reactos.git
synced 2024-10-15 13:45:58 +00:00
Add -O option, to define where are stored extracted resources
svn path=/trunk/; revision=28133
This commit is contained in:
parent
df1611977b
commit
28a8baa325
|
@ -48,7 +48,7 @@
|
||||||
extern int mkstemps(char *template, int suffix_len);
|
extern int mkstemps(char *template, int suffix_len);
|
||||||
|
|
||||||
int process_resources(const char* input_file_name, const char* specific_file_name,
|
int process_resources(const char* input_file_name, const char* specific_file_name,
|
||||||
const char* relative_path,
|
const char* relative_path, const char* output_path,
|
||||||
int inserting, int force_processing, int verbose);
|
int inserting, int force_processing, int verbose);
|
||||||
|
|
||||||
static const char* help =
|
static const char* help =
|
||||||
|
@ -172,7 +172,7 @@ char* get_filename_with_full_path(char* output, const char* filename, const char
|
||||||
}
|
}
|
||||||
|
|
||||||
void process_includes(const char* input_file_name, const char* specific_file_name,
|
void process_includes(const char* input_file_name, const char* specific_file_name,
|
||||||
const char* relative_path,
|
const char* relative_path, const char* output_path,
|
||||||
int inserting, int force_processing, int verbose)
|
int inserting, int force_processing, int verbose)
|
||||||
{
|
{
|
||||||
char filename[PATH_MAX];
|
char filename[PATH_MAX];
|
||||||
|
@ -187,14 +187,14 @@ void process_includes(const char* input_file_name, const char* specific_file_nam
|
||||||
if (!(include_file_name = parse_include(buffer))) continue;
|
if (!(include_file_name = parse_include(buffer))) continue;
|
||||||
if ( verbose ) printf ( "Processing included file %s\n", include_file_name);
|
if ( verbose ) printf ( "Processing included file %s\n", include_file_name);
|
||||||
process_resources(get_filename_with_full_path(filename, include_file_name, relative_path),
|
process_resources(get_filename_with_full_path(filename, include_file_name, relative_path),
|
||||||
specific_file_name, relative_path,
|
specific_file_name, relative_path, output_path,
|
||||||
inserting, force_processing, verbose);
|
inserting, force_processing, verbose);
|
||||||
}
|
}
|
||||||
fclose(fin);
|
fclose(fin);
|
||||||
}
|
}
|
||||||
|
|
||||||
int process_resources(const char* input_file_name, const char* specific_file_name,
|
int process_resources(const char* input_file_name, const char* specific_file_name,
|
||||||
const char* relative_path,
|
const char* relative_path, const char* output_path,
|
||||||
int inserting, int force_processing, int verbose)
|
int inserting, int force_processing, int verbose)
|
||||||
{
|
{
|
||||||
char filename[PATH_MAX];
|
char filename[PATH_MAX];
|
||||||
|
@ -237,15 +237,17 @@ int process_resources(const char* input_file_name, const char* specific_file_nam
|
||||||
if (inserting) fputc(c, ftmp);
|
if (inserting) fputc(c, ftmp);
|
||||||
if (c == EOF) break;
|
if (c == EOF) break;
|
||||||
|
|
||||||
if (!(fres = fopen(get_filename_with_full_path(filename, res_file_name, relative_path),
|
|
||||||
inserting ? "rb" : "wb"))) break;
|
|
||||||
if (inserting)
|
if (inserting)
|
||||||
{
|
{
|
||||||
|
if (!(fres = fopen(get_filename_with_full_path(filename, res_file_name, relative_path),
|
||||||
|
"rb"))) break;
|
||||||
if (!insert_hexdump(ftmp, fres)) break;
|
if (!insert_hexdump(ftmp, fres)) break;
|
||||||
while ( (c = fgetc(fin)) != EOF && c != '}') /**/;
|
while ( (c = fgetc(fin)) != EOF && c != '}') /**/;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if (!(fres = fopen(get_filename_with_full_path(filename, res_file_name, output_path),
|
||||||
|
"wb"))) break;
|
||||||
if (!extract_hexdump(fres, fin)) break;
|
if (!extract_hexdump(fres, fin)) break;
|
||||||
}
|
}
|
||||||
fclose(fres);
|
fclose(fres);
|
||||||
|
@ -272,7 +274,7 @@ int process_resources(const char* input_file_name, const char* specific_file_nam
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
process_includes(input_file_name, specific_file_name, relative_path,
|
process_includes(input_file_name, specific_file_name, relative_path, output_path,
|
||||||
inserting, force_processing, verbose);
|
inserting, force_processing, verbose);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -302,8 +304,9 @@ int main(int argc, char **argv)
|
||||||
const char* input_file_name = 0;
|
const char* input_file_name = 0;
|
||||||
const char* specific_file_name = 0;
|
const char* specific_file_name = 0;
|
||||||
const char* relative_path = 0;
|
const char* relative_path = 0;
|
||||||
|
const char* output_path = 0;
|
||||||
|
|
||||||
while((optc = getopt(argc, argv, "axi:o:b:fhv")) != EOF)
|
while((optc = getopt(argc, argv, "axi:o:b:O:fhv")) != EOF)
|
||||||
{
|
{
|
||||||
switch(optc)
|
switch(optc)
|
||||||
{
|
{
|
||||||
|
@ -320,6 +323,10 @@ int main(int argc, char **argv)
|
||||||
if (convert_dir && convert_dir != optc) usage();
|
if (convert_dir && convert_dir != optc) usage();
|
||||||
convert_dir = optc;
|
convert_dir = optc;
|
||||||
break;
|
break;
|
||||||
|
case 'O':
|
||||||
|
if (output_path) usage();
|
||||||
|
output_path = fix_path_sep(optarg);
|
||||||
|
break;
|
||||||
case 'b':
|
case 'b':
|
||||||
if (relative_path) usage();
|
if (relative_path) usage();
|
||||||
relative_path = fix_path_sep(optarg);
|
relative_path = fix_path_sep(optarg);
|
||||||
|
@ -345,6 +352,7 @@ int main(int argc, char **argv)
|
||||||
if (!convert_dir) usage();
|
if (!convert_dir) usage();
|
||||||
|
|
||||||
if (!process_resources(input_file_name, specific_file_name, relative_path,
|
if (!process_resources(input_file_name, specific_file_name, relative_path,
|
||||||
|
output_path ? output_path : relative_path,
|
||||||
convert_dir == 'a', force_overwrite, verbose))
|
convert_dir == 'a', force_overwrite, verbose))
|
||||||
{
|
{
|
||||||
perror("Processing failed");
|
perror("Processing failed");
|
||||||
|
|
Loading…
Reference in a new issue