X-Git-Url: https://git.draconx.ca/gitweb/gob-dx.git/blobdiff_plain/705f8840a368a4843568834caa5f3a075d877cee..1aa75d411dd68f6e015a747a39b5179cb5573bb8:/src/main.c diff --git a/src/main.c b/src/main.c index 3bdc4f4..295199c 100644 --- a/src/main.c +++ b/src/main.c @@ -3492,13 +3492,13 @@ open_files(void) if (file_sep != 0) sep[0] = file_sep; outfilephbase = g_strconcat (fullfilebase, sep, "private.h", NULL); - outfileph = g_strconcat (outfilephbase, no_touch ? "#gob#" : "", NULL); + outfileph = g_strconcat (outfilephbase, no_touch_headers ? "#gob#" : "", NULL); } else { outfilephbase = NULL; outfileph = NULL; } - + if ( ! no_write) { out = fopen (outfile, "w"); if (out == NULL) { @@ -3907,7 +3907,7 @@ print_class_block(Class *c) " * Public methods\n" " */\n"); - if (!overrode_get_type) { + if (!overrode_get_type && !no_gnu) { /* * For ordinary "static" types it should be safe to mark the * get_type implementation as const, since the get_type @@ -4315,7 +4315,8 @@ print_enum (EnumDef *enode) g_free (str); out_printf (outh, "%s_get_type()\n", funcprefix); - out_printf (outh, "GType %s_get_type (void) G_GNUC_CONST;\n\n", funcprefix); + out_printf (outh, "GType %s_get_type (void)%s;\n\n", + funcprefix, no_gnu ? "": " G_GNUC_CONST"); out_printf (out, "GType\n%s_get_type (void)\n" @@ -4380,7 +4381,8 @@ print_flags (Flags *fnode) g_free (str); out_printf (outh, "%s_get_type()\n", funcprefix); - out_printf (outh, "GType %s_get_type (void) G_GNUC_CONST;\n\n", funcprefix); + out_printf (outh, "GType %s_get_type (void)%s;\n\n", + funcprefix, no_gnu ? "" : " G_GNUC_CONST"); out_printf (out, "GType\n%s_get_type (void)\n" @@ -4443,7 +4445,8 @@ print_error (Error *enode) g_free (str); out_printf (outh, "%s_get_type ()\n", funcprefix); - out_printf (outh, "GType %s_get_type (void) G_GNUC_CONST;\n\n", funcprefix); + out_printf (outh, "GType %s_get_type (void)%s;\n\n", + funcprefix, no_gnu ? "" : " G_GNUC_CONST"); out_printf (out, "GType\n%s_get_type (void)\n" @@ -4520,57 +4523,84 @@ generate_outfiles(void) print_header_postfixes(); } +static void print_version(void) +{ + printf("%s (%s) %s\n", PACKAGE_NAME, PACKAGE_TARNAME, PACKAGE_VERSION); + putchar('\n'); + puts("Copyright (C) 2013 George (Jiri) Lebl et al."); + puts("Copyright (C) 2020 Nick Bowler"); + puts("License GPLv2+: GNU GPL version 2 or later ."); + puts("This is free software: you are free to change and redistribute it."); + puts("There is NO WARRANTY, to the extent permitted by law."); + +} + +static void print_usage(FILE *f) +{ + fprintf(f, "Usage: %s [options] file.gob\n", g_get_prgname()); + if (f == stderr) { + fprintf(f, "Try '%s --help' for more information.\n", + g_get_prgname()); + } +} + static void print_help(void) { - fprintf(stderr, "Gob version %s\n\n", VERSION); - fprintf(stderr, "gob [options] file.gob\n\n"); - fprintf(stderr, "Options:\n" - "\t--help,-h,-? Display this help\n" - "\t--version Display version\n" - "\t--exit-on-warn,-w Exit with an error on warnings\n" - "\t--no-exit-on-warn Don't exit on warnings [default]\n" - "\t--for-cpp Create C++ files\n" - "\t--no-extern-c Never print extern \"C\" into the " - "header\n" - "\t--no-gnu Never use GNU extentions\n" - "\t--no-touch Don't touch output files unless they " - "really\n" - "\t changed (implies --no-touch-headers)\n" - "\t--no-touch-headers Don't touch headers unless they " - "really changed\n" - "\t--always-private-header Always create a private header " - "file,\n" - "\t even if it would be empty\n" - "\t--ondemand-private-header Create private header only when " - "needed\n" - "\t [default]\n" - "\t--no-private-header Don't create a private header, " - "put private\n" - "\t structure and protected " - "prototypes inside c file\n" - "\t--always-private-struct Always create a private pointer " - "in\n" - "\t the object structure\n" - "\t--m4 Preprocess source with m4. " - "Following args will\n" - "\t be passed to m4\n" - "\t--m4-dir Print directory that will be " - "searched for m4\n" - "\t files\n" - "\t--no-write,-n Don't write output files, just " - "check syntax\n" - "\t--no-lines Don't print '#line' to output\n" - "\t--no-self-alias Don't create self type and macro " - "aliases\n" - "\t--no-kill-underscores Ignored for compatibility\n" - "\t-o,--output-dir The directory where output " - "should be placed\n" - "\t--file-sep[=c] replace default \'-\' file " - "name separator\n\n" - "\t--gtk3 Use gtk+3\n" - ); - fprintf(stderr, "End world hunger, donate to the World Food Programme, http://www.wfp.org\n"); + print_usage(stdout); + + puts( +"This is \"GObject Builder\": a simple preprocessor to help with\n" +"implementing GObject types in C.\n" + ); + + puts("Options:"); + puts(" --help,-h,-? Display this help\n" + " --version Display version\n" + " --exit-on-warn,-w Exit with an error on warnings\n" + " --no-exit-on-warn Don't exit on warnings [default]\n" + " --for-cpp Create C++ files\n" + " --no-extern-c Never print extern \"C\" into the " + "header\n" + " --no-gnu Never use GNU extentions\n" + " --no-touch Don't touch output files unless they " + "really\n" + " changed (implies --no-touch-headers)\n" + " --no-touch-headers Don't touch headers unless they " + "really changed\n" + " --always-private-header Always create a private header " + "file,\n" + " even if it would be empty\n" + " --ondemand-private-header Create private header only when " + "needed\n" + " [default]\n" + " --no-private-header Don't create a private header, " + "put private\n" + " structure and protected " + "prototypes inside c file\n" + " --always-private-struct Always create a private pointer " + "in\n" + " the object structure\n" + " --m4 Preprocess source with m4. " + "Following args will\n" + " be passed to m4\n" + " --m4-dir Print directory that will be " + "searched for m4\n" + " files\n" + " --no-write,-n Don't write output files, just " + "check syntax\n" + " --no-lines Don't print '#line' to output\n" + " --no-self-alias Don't create self type and macro " + "aliases\n" + " --no-kill-underscores Ignored for compatibility\n" + " -o,--output-dir The directory where output " + "should be placed\n" + " --file-sep[=c] replace default \'-\' file " + "name separator\n\n" + " --gtk3 Use gtk+3\n" + ); + + puts("End world hunger, donate to the World Food Programme: https://www.wfp.org/"); } static void @@ -4620,7 +4650,7 @@ parse_options(int argc, char *argv[]) /*must be a file*/ if(got_file) { fprintf(stderr, "Specify only one file!\n"); - print_help(); + print_usage(stderr); exit(1); } filename = argv[i]; @@ -4629,7 +4659,7 @@ parse_options(int argc, char *argv[]) print_help(); exit(0); } else if(strcmp(argv[i], "--version")==0) { - fprintf(stderr, "Gob version %s\n", VERSION); + print_version(); exit(0); } else if(strcmp(argv[i], "--exit-on-warn")==0) { exit_on_warn = TRUE; @@ -4711,7 +4741,7 @@ parse_options(int argc, char *argv[]) } else if(strncmp(argv[i], "--", 2)==0) { /*unknown long option*/ fprintf(stderr, "Unknown option '%s'!\n", argv[i]); - print_help(); + print_usage(stderr); exit(1); } else { /*by now we know we have a string starting with @@ -4732,7 +4762,7 @@ parse_options(int argc, char *argv[]) default: fprintf(stderr, "Unknown option '%c'!\n", *p); - print_help(); + print_usage(stderr); exit(1); } } @@ -4831,6 +4861,8 @@ compare_and_move (const char *old_filename) int main(int argc, char *argv[]) { + g_set_prgname(argc > 0 ? argv[0] : "gob2"); + parse_options(argc, argv); if(use_m4) { @@ -4935,15 +4967,16 @@ main(int argc, char *argv[]) if (outph) fclose (outph); - if (! no_write) { + if (!no_write) { if (no_touch) { - compare_and_move (outfilebase); + compare_and_move(outfilebase); + } + if (no_touch_headers) { + compare_and_move(outfilehbase); if (outfilephbase) - compare_and_move (outfilephbase); + compare_and_move(outfilephbase); } - if (no_touch_headers) - compare_and_move (outfilehbase); } - + return 0; }