summaryrefslogtreecommitdiffstats
path: root/src/main.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2009-11-03 11:11:11 +0000
committerBram Moolenaar <Bram@vim.org>2009-11-03 11:11:11 +0000
commit3f269675d47dead291679bde9268aef174f8a9b7 (patch)
tree4125dd9a82beb898e6776ba30c256851e473a0c4 /src/main.c
parentbadfde1bfe756d529389bee7084341e4adbdf495 (diff)
updated for version 7.2-269v7.2.269
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c62
1 files changed, 42 insertions, 20 deletions
diff --git a/src/main.c b/src/main.c
index 84aa146e76..5bb81a6003 100644
--- a/src/main.c
+++ b/src/main.c
@@ -130,10 +130,6 @@ static char_u *serverMakeName __ARGS((char_u *arg, char *cmd));
#endif
-#ifdef STARTUPTIME
-static FILE *time_fd = NULL;
-#endif
-
/*
* Different types of error messages.
*/
@@ -173,6 +169,9 @@ main
char_u *fname = NULL; /* file name from command line */
mparm_T params; /* various parameters passed between
* main() and other functions. */
+#ifdef STARTUPTIME
+ int i;
+#endif
/*
* Do any system-specific initialisations. These can NOT use IObuff or
@@ -203,8 +202,15 @@ main
#endif
#ifdef STARTUPTIME
- time_fd = mch_fopen(STARTUPTIME, "a");
- TIME_MSG("--- VIM STARTING ---");
+ for (i = 1; i < argc; ++i)
+ {
+ if (STRNICMP(argv[i], "--startuptime=", 14) == 0)
+ {
+ time_fd = mch_fopen(argv[i] + 14, "a");
+ TIME_MSG("--- VIM STARTING ---");
+ break;
+ }
+ }
#endif
starttime = time(NULL);
@@ -1150,6 +1156,18 @@ main_loop(cmdwin, noexmode)
cursor_on();
do_redraw = FALSE;
+
+#ifdef STARTUPTIME
+ /* Now that we have drawn the first screen all the startup stuff
+ * has been done, close any file for startup messages. */
+ if (time_fd != NULL)
+ {
+ TIME_MSG("first screen update");
+ TIME_MSG("--- VIM STARTED ---");
+ fclose(time_fd);
+ time_fd = NULL;
+ }
+#endif
}
#ifdef FEAT_GUI
if (need_mouse_correct)
@@ -1743,6 +1761,10 @@ command_line_scan(parmp)
/* already processed, skip */
}
#endif
+ else if (STRNICMP(argv[0] + argv_idx, "startuptime", 11) == 0)
+ {
+ /* already processed, skip */
+ }
else
{
if (argv[0][argv_idx])
@@ -3211,6 +3233,20 @@ static void time_diff __ARGS((struct timeval *then, struct timeval *now));
static struct timeval prev_timeval;
+# ifdef WIN3264
+/*
+ * Windows doesn't have gettimeofday(), although it does have struct timeval.
+ */
+ static int
+gettimeofday(struct timeval *tv, char *dummy)
+{
+ long t = clock();
+ tv->tv_sec = t / CLOCKS_PER_SEC;
+ tv->tv_usec = (t - tv->tv_sec * CLOCKS_PER_SEC) * 1000000 / CLOCKS_PER_SEC;
+ return 0;
+}
+# endif
+
/*
* Save the previous time before doing something that could nest.
* set "*tv_rel" to the time elapsed so far.
@@ -3299,20 +3335,6 @@ time_msg(msg, tv_start)
}
}
-# ifdef WIN3264
-/*
- * Windows doesn't have gettimeofday(), although it does have struct timeval.
- */
- int
-gettimeofday(struct timeval *tv, char *dummy)
-{
- long t = clock();
- tv->tv_sec = t / CLOCKS_PER_SEC;
- tv->tv_usec = (t - tv->tv_sec * CLOCKS_PER_SEC) * 1000000 / CLOCKS_PER_SEC;
- return 0;
-}
-# endif
-
#endif
#if defined(FEAT_CLIENTSERVER) || defined(PROTO)