]> code.delx.au - gnu-emacs/blobdiff - lib-src/profile.c
Fix previous.
[gnu-emacs] / lib-src / profile.c
index 09b094ce9347b2e71e56ee7efa866114435be033..4e3d8e00e4b4acc062ad941b033a5d956c1b199f 100644 (file)
@@ -1,23 +1,23 @@
 /* profile.c --- generate periodic events for profiling of Emacs Lisp code.
- Copyright (C) 1992, 1994 Free Software Foundation, Inc.
+   Copyright (C) 1992, 1994, 1999, 2001, 2002, 2003, 2004, 2005, 2006,
+                 2007, 2008, 2009  Free Software Foundation, Inc.
 
- Author: Boaz Ben-Zvi <boaz@lcs.mit.edu>
+Author: Boaz Ben-Zvi <boaz@lcs.mit.edu>
 
- This file is part of GNU Emacs.
+This file is part of GNU Emacs.
 
- GNU Emacs 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 2, or (at your option)
- any later version.
+GNU Emacs 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.
 
- GNU Emacs 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.
+GNU Emacs 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 GNU Emacs; see the file COPYING.  If not, write to
- the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+You should have received a copy of the GNU General Public License
+along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 
 /**
  **  abstraction : a stopwatch
  **  operations: reset_watch, get_time
  */
+#include <config.h>
 #include <stdio.h>
-#include <../src/config.h>
-#include <../src/systime.h>
+#include <systime.h>
 
-static struct timeval TV1, TV2;
+static EMACS_TIME TV1, TV2;
 static int watch_not_started = 1; /* flag */
 static char time_string[30];
 
@@ -47,26 +47,38 @@ reset_watch ()
 }
 
 /* This call returns the time since the last reset_watch call.  The time
-   is returned as a string with the format  <seconds>.<micro-seconds> 
+   is returned as a string with the format  <seconds>.<micro-seconds>
    If reset_watch was not called yet, exit.  */
 
 char *
 get_time ()
 {
   if (watch_not_started)
-    exit (1);  /* call reset_watch first ! */
+    exit (EXIT_FAILURE);  /* 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",
-         TV2.tv_sec - TV1.tv_sec, TV2.tv_usec - TV1.tv_usec);
+  EMACS_SUB_TIME (TV2, TV2, TV1);
+  sprintf (time_string, "%lu.%06lu", (unsigned long)EMACS_SECS (TV2), (unsigned long)EMACS_USECS (TV2));
   return time_string;
 }
 
-void
+#if ! defined (HAVE_GETTIMEOFDAY) && defined (HAVE_TIMEVAL)
+
+/* ARGSUSED */
+gettimeofday (tp, tzp)
+     struct timeval *tp;
+     struct timezone *tzp;
+{
+  extern long time ();
+
+  tp->tv_sec = time ((long *)0);
+  tp->tv_usec = 0;
+  if (tzp != 0)
+    tzp->tz_minuteswest = -1;
+}
+
+#endif
+\f
+int
 main ()
 {
   int c;
@@ -81,11 +93,16 @@ main ()
          puts (get_time ());
          break;
        case 'q':
-         exit (0);
+         exit (EXIT_SUCCESS);
        }
       /* Anything remaining on the line is ignored.  */
       while (c != '\n' && c != EOF)
        c = getchar ();
     }
-  exit (1);
+  exit (EXIT_FAILURE);
 }
+
+/* arch-tag: 8db68f7e-2322-4944-a315-dba349bdbf39
+   (do not change this comment) */
+
+/* profile.c ends here */