Mercurial > hg > xemacs-beta
view lib-src/profile.c @ 5518:3cc7470ea71c
gnuclient: if TMPDIR was set and connect failed, try again with /tmp
2011-06-03 Aidan Kehoe <kehoea@parhasard.net>
* gnuslib.c (connect_to_unix_server):
Retry with /tmp as a directory in which to search for Unix sockets
if an attempt to connect with some other directory failed (which
may be because gnuclient and gnuserv don't share an environment
value for TMPDIR, or because gnuserv was compiled with USE_TMPDIR
turned off).
| author | Aidan Kehoe <kehoea@parhasard.net> |
|---|---|
| date | Fri, 03 Jun 2011 18:40:57 +0100 |
| parents | b9167d522a9a |
| children |
line wrap: on
line source
/* profile.c --- generate periodic events for profiling of Emacs Lisp code. Copyright (C) 1992, 1994 Free Software Foundation, Inc. Copyright (C) 2004 Ben Wing. Author: Boaz Ben-Zvi <boaz@lcs.mit.edu> This file is part of XEmacs. XEmacs is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. XEmacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with XEmacs. If not, see <http://www.gnu.org/licenses/>. */ /* Synched up with: FSF 19.28. */ /* #### Not sure if this is needed for XEmacs. */ /** ** To be run as an emacs process. Input string that starts with: ** 'z' -- resets the watch (to zero). ** 'p' -- return time (on stdout) as string with format <sec>.<micro-sec> ** 'q' -- exit. ** ** abstraction : a stopwatch ** operations: reset_watch, get_time */ #include <config.h> #include <stdio.h> #include <stdlib.h> #include "../src/systime.h" static struct timeval TV1, TV2; static int watch_not_started = 1; /* flag */ static char time_string[30]; #ifdef WIN32_NATIVE #include <sys/timeb.h> /* Emulate gettimeofday (Ulrich Leodolter, 1/11/95). */ void gettimeofday (struct timeval *tv, struct timezone *tz) { struct _timeb tb; _ftime (&tb); tv->tv_sec = tb.time; tv->tv_usec = tb.millitm * 1000L; if (tz) { tz->tz_minuteswest = tb.timezone; /* minutes west of Greenwich */ tz->tz_dsttime = tb.dstflag; /* type of dst correction */ } } #endif /* Reset the stopwatch to zero. */ static void reset_watch (void) { EMACS_GET_TIME (TV1); watch_not_started = 0; } /* This call returns the time since the last reset_watch call. The time is returned as a string with the format <seconds>.<micro-seconds> If reset_watch was not called yet, exit. */ static char * get_time (void) { if (watch_not_started) exit (1); /* call reset_watch first ! */ EMACS_GET_TIME (TV2); if (TV1.tv_usec > TV2.tv_usec) { TV2.tv_usec += 1000000; TV2.tv_sec--; } sprintf (time_string, "%lu.%06lu", (unsigned long) TV2.tv_sec - TV1.tv_sec, (unsigned long) TV2.tv_usec - TV1.tv_usec); return time_string; } int main (int argc, char **argv) { int c; while ((c = getchar ()) != EOF) { switch (c) { case 'z': reset_watch (); break; case 'p': puts (get_time ()); break; case 'q': exit (0); } /* Anything remaining on the line is ignored. */ while (c != '\n' && c != EOF) c = getchar (); } return 1; }
