{ "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 }
};
}
/* 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. */
*q++ = '_';
p++;
}
+ else if (*p == '\n')
+ {
+ *q++ = '&';
+ *q++ = 'n';
+ p++;
+ }
else
{
if (*p == '&' || (*p == '-' && p == name))
{
if (alternate_editor)
{
- int i = optind -1 ;
+ int i = optind - 1;
execvp (alternate_editor, argv + i);
return;
}
{
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
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)))
- printf ("%s", str);
+ {
+ if (needlf == 2)
+ printf ("\n");
+ printf ("%s", str);
+ needlf = str[0] == '\0' ? needlf : str[strlen (str) - 1] != '\n';
+ }
+
+ if (needlf)
+ printf ("\n");
+ fflush (stdout);
return 0;
}