summaryrefslogtreecommitdiff
path: root/src/flpsed.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/flpsed.cxx')
-rw-r--r--src/flpsed.cxx87
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();
}