# HG changeset patch # User Stefan Monnier # Date 1032313445 0 # Node ID 6ee937dcfe1697758e28fd39a1dd75713d42780b # Parent e0d6f0b369d1fb9c5148896a696680b78a21ff2d (quote_file_name): Quote \n. (main): Print a final \n when needed. diff -r e0d6f0b369d1 -r 6ee937dcfe16 lib-src/emacsclient.c --- a/lib-src/emacsclient.c Tue Sep 17 19:17:58 2002 +0000 +++ b/lib-src/emacsclient.c Wed Sep 18 01:44:05 2002 +0000 @@ -64,7 +64,7 @@ { "no-wait", no_argument, NULL, 'n' }, { "help", no_argument, NULL, 'H' }, { "version", no_argument, NULL, 'V' }, - { "alternate-editor",required_argument, NULL, 'a' }, + { "alternate-editor", required_argument, NULL, 'a' }, { 0 } }; @@ -131,7 +131,7 @@ } /* Return a copy of NAME, inserting a & - before each &, each space, and any initial -. + before each &, each space, each newline, and any initial -. Change spaces to underscores, too, so that the return value never contains a space. */ @@ -152,6 +152,12 @@ *q++ = '_'; p++; } + else if (*p == '\n') + { + *q++ = '&'; + *q++ = 'n'; + p++; + } else { if (*p == '&' || (*p == '-' && p == name)) @@ -190,7 +196,7 @@ { if (alternate_editor) { - int i = optind -1 ; + int i = optind - 1; execvp (alternate_editor, argv + i); return; } @@ -257,7 +263,7 @@ { char *system_name; int system_name_length; - int s, i; + int s, i, needlf = 0; FILE *out, *in; struct sockaddr_un server; #ifdef SERVER_HOME_DIR @@ -444,15 +450,21 @@ return 0; printf ("Waiting for Emacs..."); + needlf = 2; fflush (stdout); - /* Now, wait for an answer and print any messages. On some systems, - the first line we read will actually be the output we just sent. - We can't predict whether that will happen, so if it does, we - detect it by recognizing `Client: ' at the beginning. */ + /* Now, wait for an answer and print any messages. */ + while ((str = fgets (string, BUFSIZ, in))) + { + if (needlf == 2) + printf ("\n"); + printf ("%s", str); + needlf = str[0] == '\0' ? needlf : str[strlen (str) - 1] != '\n'; + } - while ((str = fgets (string, BUFSIZ, in))) - printf ("%s", str); + if (needlf) + printf ("\n"); + fflush (stdout); return 0; }