diff options
author | schnetter <schnetter@83718e91-0e4f-0410-abf4-91180603181f> | 2005-05-25 13:18:59 +0000 |
---|---|---|
committer | schnetter <schnetter@83718e91-0e4f-0410-abf4-91180603181f> | 2005-05-25 13:18:59 +0000 |
commit | fe82daa7373a7b1d0347a7f7b2c2cf55c33d83a8 (patch) | |
tree | cb3914290b19a5a9fadccf4d2f45abebd3ec4b1e /src/util | |
parent | e6127db547407be2e1370b8606292fb1ca02dc47 (diff) |
Correct parameter file that outputs that tarball.
Create one tarball per thorn; this scales much better, and is only
slightly less convenient.
Create the output directory if it does not yet exist.
git-svn-id: http://svn.cactuscode.org/arrangements/CactusUtils/Formaline/trunk@9 83718e91-0e4f-0410-abf4-91180603181f
Diffstat (limited to 'src/util')
-rw-r--r-- | src/util/makeblob.c | 102 | ||||
-rw-r--r-- | src/util/makemetablob.c | 41 |
2 files changed, 82 insertions, 61 deletions
diff --git a/src/util/makeblob.c b/src/util/makeblob.c index 46f3446..a7f94c0 100644 --- a/src/util/makeblob.c +++ b/src/util/makeblob.c @@ -1,78 +1,58 @@ /* $Header$ */ +#include <assert.h> #include <stdio.h> int main (int argc, char * * argv) { - FILE * metafile; - unsigned long metacount; - char filename [100]; - FILE * file; + char const * arrangement; + char const * thorn; unsigned long count; - for (metacount = 0; ; ++ metacount) - { - sprintf (filename, "cactus-source-%08lu.c", metacount); - file = fopen (filename, "w"); - fprintf (file, "/* This is an auto-generated file -- do not edit */\n"); - fprintf (file, "#include <stddef.h>\n"); - fprintf (file, "\n"); - fprintf (file, "char const cactus_source_%08lu [] = {", metacount); - for (count = 0; count < 1000000; ++ count) - { - int const ch = getc (stdin); - if (feof (stdin)) break; - if (ferror (stdin)) return 1; - if (count != 0) { - fprintf (file, ","); - } - if (count % 16 == 0) - { - fprintf (file, "\n"); - } - fprintf (file, "%3d", ch); - } - fprintf (file, "\n"); - fprintf (file, "};\n"); - fprintf (file, "size_t const cactus_source_length_%08lu = %lu;\n", metacount, count); - fclose (file); - - if (feof (stdin)) break; - } - ++ metacount; - + assert (argc == 3); + arrangement = argv[1]; + thorn = argv[2]; + assert (arrangement); + assert (thorn); - - metafile = fopen ("cactus-source.c", "w"); - fprintf (metafile, "/* This is an auto-generated file -- do not edit */\n"); - fprintf (metafile, "#include <stddef.h>\n"); - fprintf (metafile, "\n"); - fprintf (metafile, "struct chunkinfo\n"); - fprintf (metafile, "{\n"); - fprintf (metafile, " char const * data;\n"); - fprintf (metafile, " size_t * length;\n"); - fprintf (metafile, "};\n"); - fprintf (metafile, "\n"); - for (count = 0; count < metacount; ++ count) - { - fprintf (metafile, "extern char const cactus_source_%08lu [];\n", count); - fprintf (metafile, "extern size_t cactus_source_length_%08lu;\n", count); - } - fprintf (metafile, "\n"); - fprintf (metafile, "struct chunkinfo cactus_source_chunks [] = {"); - for (count = 0; count < metacount; ++ count) + printf ("/* This is an auto-generated file -- do not edit */\n"); + printf ("\n"); + printf ("#include <stddef.h>\n"); + printf ("\n"); + printf ("struct sourceinfo\n"); + printf ("{\n"); + printf (" char const * data;\n"); + printf (" size_t length;\n"); + printf (" char const * arrangement;\n"); + printf (" char const * thorn;\n"); + printf ("};\n"); + printf ("\n"); + printf ("static char const data [] = {"); + for (count = 0; ; ++ count) { + int const ch = getc (stdin); + if (feof (stdin)) break; + if (ferror (stdin)) return 1; if (count != 0) { - fprintf (metafile, ","); + printf (","); + } + if (count % 16 == 0) + { + printf ("\n"); } - fprintf (metafile, "\n"); - fprintf (metafile, "{ cactus_source_%08lu, & cactus_source_length_%08lu }", count, count); + printf ("%3d", ch); } - fprintf (metafile, "\n"); - fprintf (metafile, "};\n"); - fprintf (metafile, "size_t cactus_source_chunks_length = %lu;\n", metacount); - fclose (metafile); + printf ("\n"); + printf ("};\n"); + printf ("\n"); + printf ("struct sourceinfo const cactus_source_%s =\n", thorn); + printf ("{\n"); + printf (" data,\n"); + printf (" %lu,\n", count); + printf (" \"%s\",\n", arrangement); + printf (" \"%s\"\n", thorn); + printf ("};\n"); return 0; } diff --git a/src/util/makemetablob.c b/src/util/makemetablob.c new file mode 100644 index 0000000..bc871a6 --- /dev/null +++ b/src/util/makemetablob.c @@ -0,0 +1,41 @@ +/* $Header$ */ + +#include <stdio.h> + +int +main (int argc, char * * argv) +{ + int count; + + printf ("/* This is an auto-generated file -- do not edit */\n"); + printf ("\n"); + printf ("#include <stddef.h>\n"); + printf ("\n"); + printf ("struct sourceinfo\n"); + printf ("{\n"); + printf (" char const * data;\n"); + printf (" size_t length;\n"); + printf (" char const * arrangement;\n"); + printf (" char const * thorn;\n"); + printf ("};\n"); + printf ("\n"); + for (count = 1; count < argc; ++ count) + { + printf ("extern struct sourceinfo cactus_source_%s;\n", argv[count]); + } + printf ("\n"); + printf ("struct sourceinfo const * const cactus_source [] = {"); + for (count = 1; count < argc; ++ count) + { + if (count != 1) { + printf (","); + } + printf ("\n"); + printf (" & cactus_source_%s", argv[count]); + } + printf ("\n"); + printf ("};\n"); + printf ("size_t const cactus_source_length = %d;\n", argc - 1); + + return 0; +} |