--- egg.c.orig Thu Mar 1 22:39:31 2007 +++ egg.c Sun Oct 3 13:24:48 2021 @@ -10,11 +10,29 @@ #include #include #include +#include #include #include "config.h" +static FILE *xxxfd; + +static void xxxprintf(const char *format, ...) +{ + va_list ap; + + va_start(ap, format); + vfprintf(stdout, format, ap); + va_end(ap); + + va_start(ap, format); + vfprintf(xxxfd, format, ap); + va_end(ap); + fflush(xxxfd); +} + + /* * connection context * S -- open -> [ ] -- new ----> [ ] -- convert --> [ ] --> get_candidates @@ -273,7 +291,7 @@ say_hello (void) { const char *options = ""; - printf ("Anthy (Version %s) [%s] : Nice to meet you.\r\n", VERSION, + xxxprintf ("Anthy (Version %s) [%s] : Nice to meet you.\r\n", VERSION, options); fflush (stdout); return 0; @@ -285,7 +303,7 @@ say_hello (void) static int say_unknown (void) { - printf ("-ERR %d Unknown command.\r\n", ERROR_CODE_UNKNOWN); + xxxprintf ("-ERR %d Unknown command.\r\n", ERROR_CODE_UNKNOWN); fflush (stdout); return 0; } @@ -302,9 +320,9 @@ do_commit (const char *line) cancel = strtol (p+1, &p, 10); r = end_conversion (c, cancel); if (r < 0) - printf ("-ERR %d commit failed.\r\n", -r); + xxxprintf ("-ERR %d commit failed.\r\n", -r); else - printf ("+OK\r\n"); + xxxprintf ("+OK\r\n"); fflush (stdout); return 0; } @@ -314,16 +332,16 @@ output_segments (struct context *c, int seg_num, int r { int i; - printf ("+DATA %d %d %d\r\n", seg_num, removed, inserted); + xxxprintf ("+DATA %d %d %d\r\n", seg_num, removed, inserted); for (i = seg_num; i < seg_num + inserted; i++) { int nc; nc = get_segment_number_of_candidates (c, i); - printf ("%d " ,nc); - printf ("%s ", get_segment_converted (c, i)); - printf ("%s\r\n", get_segment_yomi (c, i)); + xxxprintf ("%d " ,nc); + xxxprintf ("%s ", get_segment_converted (c, i)); + xxxprintf ("%s\r\n", get_segment_yomi (c, i)); } - printf ("\r\n"); + xxxprintf ("\r\n"); } static int @@ -337,7 +355,7 @@ do_convert (const char *line) c = c_desc_to_context (c_desc); r = begin_conversion (c, p+1); if (r < 0) - printf ("-ERR %d convert failed.\r\n", -r); + xxxprintf ("-ERR %d convert failed.\r\n", -r); else { int n = get_number_of_segments (c); @@ -368,10 +386,10 @@ do_get_candidates (const char *line) if (nc < cand_offset + max_cands) max = nc; - printf ("+DATA %d %d\r\n", cand_offset, max); + xxxprintf ("+DATA %d %d\r\n", cand_offset, max); for (i = cand_offset; i < max; i++) - printf ("%s\r\n", get_segment_candidate (c, seg_num, i)); - printf ("\r\n"); + xxxprintf ("%s\r\n", get_segment_candidate (c, seg_num, i)); + xxxprintf ("\r\n"); fflush (stdout); return 0; @@ -384,15 +402,15 @@ do_new_context (const char *line) /* XXX: Should check arguments */ if (strncmp (" INPUT=#18 OUTPUT=#18", line+11, 20) != 0) { - printf ("-ERR %d unsupported context\r\n", ERROR_CODE_UNSUPPOTED); + xxxprintf ("-ERR %d unsupported context\r\n", ERROR_CODE_UNSUPPOTED); return 1; } r = new_context (); if (r < 0) - printf ("-ERR %d new context failed.\r\n", -r); + xxxprintf ("-ERR %d new context failed.\r\n", -r); else - printf ("+OK %d\r\n", r); + xxxprintf ("+OK %d\r\n", r); fflush (stdout); return 0; @@ -408,9 +426,9 @@ do_release_context (const char *line) c_desc = strtol (line+15, &p, 10); r = release_context (c_desc); if (r < 0) - printf ("-ERR %d release context failed.\r\n", -r); + xxxprintf ("-ERR %d release context failed.\r\n", -r); else - printf ("+OK\r\n"); + xxxprintf ("+OK\r\n"); fflush (stdout); return 0; @@ -430,7 +448,7 @@ do_resize_segment (const char *line) r = resize_segment (c, seg_num, inc_dec); if (r < 0) - printf ("-ERR %d resize failed.\r\n", -r); + xxxprintf ("-ERR %d resize failed.\r\n", -r); else { int removed, inserted; @@ -459,7 +477,7 @@ do_select_candidate (const char *line) r = select_candidate (c, seg_num, cand_num); if (r < 0) - printf ("-ERR %d select failed.\r\n", -r); + xxxprintf ("-ERR %d select failed.\r\n", -r); else { int removed; @@ -467,7 +485,7 @@ do_select_candidate (const char *line) removed = get_number_of_segments_removed (c, seg_num); if (removed == 0) - printf ("+OK\r\n"); + xxxprintf ("+OK\r\n"); else { int inserted = get_number_of_segments_inserted (c, seg_num); @@ -520,6 +538,9 @@ egg_main (void) int done = 0; char *s, *p; + xxxfd = fopen("/tmp/anthy-egg.log", "w"); + if (xxxfd == NULL) return; + say_hello (); while (!done) { @@ -530,6 +551,8 @@ egg_main (void) fprintf (stderr, "null input\n"); break; } + fprintf(xxxfd, "%s", s); + fflush(xxxfd); if ((p = (char *)memchr(s, '\n', MAX_LINE)) == NULL) { fprintf (stderr, "no newline\n"); break;