X-Git-Url: http://git.chise.org/gitweb/?p=chise%2Fxemacs-chise.git.1;a=blobdiff_plain;f=lib-src%2Fgnuclient.c;h=aaec46a47f08c59de8b1eda1e9f86bc5a135d944;hp=58588f6156d17ac42383fa2bfb96dfdb0154371c;hb=1b70edcd9999965aafe4533453eb6b353b349898;hpb=59eec5f21669e81977b5b1fe9bf717cab49cf7fb diff --git a/lib-src/gnuclient.c b/lib-src/gnuclient.c index 58588f6..aaec46a 100644 --- a/lib-src/gnuclient.c +++ b/lib-src/gnuclient.c @@ -48,12 +48,14 @@ Boston, MA 02111-1307, USA. * ../etc/gnuserv.README relative to the directory containing this file) */ -#if 0 -/* Hand-munged RCS header */ -static char rcsid [] = "!Header: gnuclient.c,v 2.2 95/12/12 01:39:21 wing nene !"; +#ifdef CYGWIN +extern void cygwin_conv_to_posix_path(const char *path, char *posix_path); #endif #include "gnuserv.h" + +char gnuserv_version[] = "gnuclient version " GNUSERV_VERSION; + #include "getopt.h" #include @@ -105,7 +107,7 @@ tell_emacs_to_resume (int sig) signal(SIGCONT, tell_emacs_to_resume); #endif - connect_type = make_connection (NULL, (u_short) 0, &s); + connect_type = make_connection (NULL, 0, &s); sprintf(buffer,"(gnuserv-eval '(resume-pid-console %d))", (int)getpid()); send_string(s, buffer); @@ -158,11 +160,11 @@ get_current_working_directory (void) { if (cp == NULL) { /* haven't calculated it yet */ -#ifdef BSD - if (getwd (cwd) == 0) -#else /* !BSD */ +#ifdef HAVE_GETCWD if (getcwd (cwd,MAXPATHLEN) == NULL) -#endif /* !BSD */ +#else + if (getwd (cwd) == 0) +#endif /* HAVE_GETCWD */ { perror (progname); fprintf (stderr, "%s: unable to get current working directory\n", @@ -191,35 +193,26 @@ filename_expand (char *fullpath, char *filename) /* fullpath - returned full pathname */ /* filename - filename to expand */ { - int len; +#ifdef CYGWIN + char cygwinFilename[MAXPATHLEN+1]; +#endif + int len; fullpath[0] = '\0'; +#ifdef CYGWIN + /* + If we're in cygwin, just convert it and let the unix stuff handle it. + */ + cygwin_conv_to_posix_path(filename, cygwinFilename); + filename = cygwinFilename; +#endif + if (filename[0] && filename[0] == '/') { /* Absolute (unix-style) pathname. Do nothing */ strcat (fullpath, filename); } -#ifdef CYGWIN - else if (filename[0] && filename[0] == '\\' && - filename[1] && filename[1] == '\\') - { - /* This path includes the server name (something like - "\\server\path"), so we assume it's absolute. Do nothing to - it. */ - strcat (fullpath, filename); - } - else if (filename[0] && - filename[1] && filename[1] == ':' && - filename[2] && filename[2] == '\\') - { - /* Absolute pathname with drive letter. Convert ":" - to "///". */ - strcat (fullpath, "//"); - strncat (fullpath, filename, 1); - strcat (fullpath, &filename[2]); - } -#endif else { /* Assume relative Unix style path. Get the current directory @@ -336,11 +329,11 @@ main (int argc, char *argv[]) char *remotearg; char thishost[HOSTNAMSZ]; /* this hostname */ char remotepath[MAXPATHLEN+1]; /* remote pathname */ - char *path; int rflg = 0; /* pathname given on cmdline */ char *portarg; - u_short port = 0; /* port to server */ + unsigned short port = 0; /* port to server */ #endif /* INTERNET_DOMAIN_SOCKETS */ + char *path; /* used indiscriminately */ #ifdef SYSV_IPC struct msgbuf *msgp; /* message */ #endif /* SYSV_IPC */ @@ -477,20 +470,21 @@ main (int argc, char *argv[]) progname); exit (1); } +#if defined(INTERNET_DOMAIN_SOCKETS) if (suppress_windows_system && hostarg) { fprintf (stderr, "%s: Remote editing is available only on X\n", progname); exit (1); } - +#endif *result = '\0'; if (eval_function || eval_form || load_library) { #if defined(INTERNET_DOMAIN_SOCKETS) connect_type = make_connection (hostarg, port, &s); #else - connect_type = make_connection (NULL, (u_short) 0, &s); + connect_type = make_connection (NULL, 0, &s); #endif sprintf (command, "(gnuserv-eval%s '(progn ", quick ? "-quickly" : ""); send_string (s, command); @@ -528,7 +522,7 @@ main (int argc, char *argv[]) #if defined(INTERNET_DOMAIN_SOCKETS) connect_type = make_connection (hostarg, port, &s); #else - connect_type = make_connection (NULL, (u_short) 0, &s); + connect_type = make_connection (NULL, 0, &s); #endif sprintf (command, "(gnuserv-eval%s '(progn ", quick ? "-quickly" : ""); send_string (s, command); @@ -562,7 +556,7 @@ main (int argc, char *argv[]) #if defined(INTERNET_DOMAIN_SOCKETS) connect_type = make_connection (hostarg, port, &s); #else - connect_type = make_connection (NULL, (u_short) 0, &s); + connect_type = make_connection (NULL, 0, &s); #endif send_string (s, "(gnuserv-eval '(emacs-pid))"); send_string (s, EOT_STR); @@ -575,7 +569,7 @@ main (int argc, char *argv[]) } /* Don't do disconnect_from_server because we have already read data, and disconnect doesn't do anything else. */ -#ifndef INTERNET_DOMAIN_SOCKETS +#ifdef SYSV_IPC if (connect_type == (int) CONN_IPC) disconnect_from_ipc_server (s, msgp, FALSE); #endif /* !SYSV_IPC */ @@ -587,7 +581,7 @@ main (int argc, char *argv[]) #if defined(INTERNET_DOMAIN_SOCKETS) connect_type = make_connection (hostarg, port, &s); #else - connect_type = make_connection (NULL, (u_short) 0, &s); + connect_type = make_connection (NULL, 0, &s); #endif #ifdef INTERNET_DOMAIN_SOCKETS @@ -643,9 +637,17 @@ main (int argc, char *argv[]) } else /* !suppress_windows_system */ { - if (display) + if (0) + ; +#ifdef HAVE_X_WINDOWS + else if (display) sprintf (command, "(gnuserv-edit-files '(x %s) '(", clean_string (display)); +#endif +#ifdef HAVE_GTK + else if (display) + strcpy (command, "(gnuserv-edit-files '(gtk nil) '("); +#endif #ifdef HAVE_MS_WINDOWS else sprintf (command, "(gnuserv-edit-files '(mswindows nil) '(");