diff options
Diffstat (limited to 'src/flpsed.cxx')
-rw-r--r-- | src/flpsed.cxx | 87 |
1 files changed, 59 insertions, 28 deletions
diff --git a/src/flpsed.cxx b/src/flpsed.cxx index 0b4d0c4..333f85c 100644 --- a/src/flpsed.cxx +++ b/src/flpsed.cxx @@ -1,5 +1,5 @@ // -// "$Id: flpsed.cxx,v 1.18 2004/10/21 21:02:05 hofmann Exp $" +// "$Id: flpsed.cxx,v 1.19 2004/10/25 20:58:55 hofmann Exp $" // // flpsed program. // @@ -201,36 +201,23 @@ Fl_Menu_Item menuitems[] = { { 0 } }; +#define TV_LEN 256 + int main(int argc, char** argv) { char c, *sep, *tmp; - int err; + int err, batch = 0; Fl_Window *win; Fl_Menu_Bar* m; Fl_Scroll *scroll; - - win = new Fl_Window(600,700); - m = new Fl_Menu_Bar(0, 0, 600, 30); - m->menu(menuitems); - scroll = new Fl_Scroll(0, 30, win->w(), win->h()-30); - gsw_p = new PSEditor(0, 0, 700, 900); - scroll->end(); - - fl_open_display(); - Fl::add_handler(xev_handler); - - win->resizable(scroll); - - win->end(); - win->callback((Fl_Callback *)quit_cb); - win->show(1, argv); - - if (argc > 1) { - gsw_p->load(argv[argc - 1]); - } + struct {char *tag; char *value;} tv[TV_LEN]; + int tv_idx = 0; err = 0; - while ((c = getopt(argc, argv, "t:")) != EOF) { - switch (c) { + while ((c = getopt(argc, argv, "bt:")) != EOF) { + switch (c) { + case 'b': + batch = 1; + break; case 't': tmp = strdup(optarg); if (!tmp) { @@ -244,7 +231,15 @@ int main(int argc, char** argv) { continue; } *sep = '\0'; - gsw_p->replace_tag(tmp, sep+1); + + if (tv_idx >= TV_LEN) { + fprintf(stderr, "More than %d tag/value pairs; ignoring %s->%s\n", + TV_LEN, tmp, sep+1); + } else { + tv[tv_idx].tag = strdup(tmp); + tv[tv_idx].value = strdup(sep+1); + tv_idx++; + } free(tmp); break; default: @@ -256,10 +251,46 @@ int main(int argc, char** argv) { exit(1); } + // argc -= optind; + // argv += optind; + if (batch) { + PSEditModel *m = new PSEditModel(594, 841, 75.0, 75.0); + int tmp_fd = m->load(argv[argc - 2]); + if (tmp_fd == -1) { + fprintf(stderr, "Could not load %s\n", argv[argc - 2]); + exit(1); + } + + for(int i=0; i<tv_idx; i++) { + m->replace_tag(tv[i].tag, tv[i].value); + free(tv[i].tag); + free(tv[i].value); + } + + m->save(argv[argc - 1], tmp_fd); + + exit(0); + } + + + + + win = new Fl_Window(600,700); + m = new Fl_Menu_Bar(0, 0, 600, 30); + m->menu(menuitems); + scroll = new Fl_Scroll(0, 30, win->w(), win->h()-30); + gsw_p = new PSEditor(0, 0, 700, 900); + scroll->end(); + + fl_open_display(); + Fl::add_handler(xev_handler); + + win->resizable(scroll); + + win->end(); + win->callback((Fl_Callback *)quit_cb); + win->show(1, argv); - argc -= optind; - argv += optind; - return Fl::run(); } |