annotate src/logfile.c @ 34667:968626cf50fa v9.1.0216

patch 9.1.0216: Error on exit with EXITFREE and 'winfixbuf' Commit: https://github.com/vim/vim/commit/620e85265ce04654053c64f8058914ecafe4eb38 Author: zeertzjq <zeertzjq@outlook.com> Date: Thu Mar 28 10:11:57 2024 +0100 patch 9.1.0216: Error on exit with EXITFREE and 'winfixbuf' Problem: Error on exit with EXITFREE and 'winfixbuf'. Solution: Handle DT_FREE before checking for 'winfixbuf'. (zeertzjq) closes: #14314 Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Thu, 28 Mar 2024 10:15:10 +0100
parents 533e36e02a68
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
31287
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1 /* vi:set ts=8 sts=4 sw=4 noet:
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
2 *
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
3 * VIM - Vi IMproved by Bram Moolenaar
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
4 *
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
5 * Do ":help uganda" in Vim to read copying and usage conditions.
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
6 * Do ":help credits" in Vim to see a list of people who contributed.
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
7 */
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
8
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
9 /*
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
10 * Implements logging. Originally intended for the channel feature, which is
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
11 * why the "ch_" prefix is used. Also useful for any kind of low-level and
32244
533e36e02a68 patch 9.0.1453: typos in source code and tests
Bram Moolenaar <Bram@vim.org>
parents: 31291
diff changeset
12 * async debugging.
31287
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
13 */
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
14
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
15 #include "vim.h"
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
16
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
17 #if defined(FEAT_EVAL) || defined(PROTO)
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
18
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
19 // Log file opened with ch_logfile().
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
20 static FILE *log_fd = NULL;
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
21 static char_u *log_name = NULL;
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
22 #ifdef FEAT_RELTIME
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
23 static proftime_T log_start;
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
24 #endif
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
25
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
26 void
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
27 ch_logfile(char_u *fname, char_u *opt)
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
28 {
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
29 FILE *file = NULL;
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
30 char *mode = "a";
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
31
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
32 if (log_fd != NULL)
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
33 {
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
34 if (*fname != NUL)
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
35 ch_log(NULL, "closing this logfile, opening %s", fname);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
36 else
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
37 ch_log(NULL, "closing logfile %s", log_name);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
38 fclose(log_fd);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
39 }
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
40
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
41 // The "a" flag overrules the "w" flag.
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
42 if (vim_strchr(opt, 'a') == NULL && vim_strchr(opt, 'w') != NULL)
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
43 mode = "w";
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
44 ch_log_output = vim_strchr(opt, 'o') != NULL ? LOG_ALWAYS : FALSE;
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
45
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
46 if (*fname != NUL)
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
47 {
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
48 file = fopen((char *)fname, mode);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
49 if (file == NULL)
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
50 {
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
51 semsg(_(e_cant_open_file_str), fname);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
52 return;
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
53 }
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
54 vim_free(log_name);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
55 log_name = vim_strsave(fname);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
56 }
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
57 log_fd = file;
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
58
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
59 if (log_fd != NULL)
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
60 {
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
61 fprintf(log_fd, "==== start log session %s ====\n",
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
62 get_ctime(time(NULL), FALSE));
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
63 // flush now, if fork/exec follows it could be written twice
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
64 fflush(log_fd);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
65 #ifdef FEAT_RELTIME
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
66 profile_start(&log_start);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
67 #endif
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
68 }
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
69 }
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
70
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
71 int
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
72 ch_log_active(void)
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
73 {
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
74 return log_fd != NULL;
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
75 }
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
76
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
77 static void
31289
4f1e70a709bb patch 9.0.0978: build errors without the +channel feature
Bram Moolenaar <Bram@vim.org>
parents: 31287
diff changeset
78 ch_log_lead(const char *what, channel_T *ch UNUSED, ch_part_T part UNUSED)
31287
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
79 {
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
80 if (log_fd == NULL)
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
81 return;
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
82
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
83 #ifdef FEAT_RELTIME
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
84 proftime_T log_now;
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
85
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
86 profile_start(&log_now);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
87 profile_sub(&log_now, &log_start);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
88 fprintf(log_fd, "%s ", profile_msg(&log_now));
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
89 #endif
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
90 #ifdef FEAT_JOB_CHANNEL
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
91 if (ch != NULL)
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
92 {
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
93 if (part < PART_COUNT)
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
94 fprintf(log_fd, "%son %d(%s): ", what, ch->ch_id, ch_part_names[part]);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
95 else
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
96 fprintf(log_fd, "%son %d: ", what, ch->ch_id);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
97 }
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
98 else
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
99 #endif
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
100 fprintf(log_fd, "%s: ", what);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
101 }
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
102
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
103 #ifndef PROTO // prototype is in proto.h
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
104 void
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
105 ch_log(channel_T *ch, const char *fmt, ...)
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
106 {
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
107 if (log_fd == NULL)
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
108 return;
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
109
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
110 va_list ap;
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
111
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
112 ch_log_lead("", ch, PART_COUNT);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
113 va_start(ap, fmt);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
114 vfprintf(log_fd, fmt, ap);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
115 va_end(ap);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
116 fputc('\n', log_fd);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
117 fflush(log_fd);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
118 did_repeated_msg = 0;
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
119 }
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
120
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
121 void
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
122 ch_error(channel_T *ch, const char *fmt, ...)
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
123 {
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
124 if (log_fd == NULL)
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
125 return;
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
126
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
127 va_list ap;
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
128
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
129 ch_log_lead("ERR ", ch, PART_COUNT);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
130 va_start(ap, fmt);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
131 vfprintf(log_fd, fmt, ap);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
132 va_end(ap);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
133 fputc('\n', log_fd);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
134 fflush(log_fd);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
135 did_repeated_msg = 0;
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
136 }
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
137 #endif
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
138
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
139 #if defined(FEAT_JOB_CHANNEL) || defined(PROTO)
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
140 /*
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
141 * Log a message "buf[len]" for channel "ch" part "part".
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
142 * Only to be called when ch_log_active() returns TRUE.
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
143 */
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
144 void
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
145 ch_log_literal(
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
146 char *lead,
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
147 channel_T *ch,
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
148 ch_part_T part,
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
149 char_u *buf,
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
150 int len)
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
151 {
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
152 ch_log_lead(lead, ch, part);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
153 fprintf(log_fd, "'");
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
154 vim_ignored = (int)fwrite(buf, len, 1, log_fd);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
155 fprintf(log_fd, "'\n");
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
156 fflush(log_fd);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
157 }
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
158 #endif
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
159
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
160 /*
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
161 * "ch_log()" function
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
162 */
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
163 void
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
164 f_ch_log(typval_T *argvars, typval_T *rettv UNUSED)
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
165 {
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
166 char_u *msg;
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
167 channel_T *channel = NULL;
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
168
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
169 if (in_vim9script()
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
170 && (check_for_string_arg(argvars, 0) == FAIL
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
171 || check_for_opt_chan_or_job_arg(argvars, 1) == FAIL))
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
172 return;
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
173
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
174 msg = tv_get_string(&argvars[0]);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
175 #if defined(FEAT_JOB_CHANNEL)
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
176 if (argvars[1].v_type != VAR_UNKNOWN)
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
177 channel = get_channel_arg(&argvars[1], FALSE, FALSE, 0);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
178 #endif
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
179
31291
16fc80710970 patch 9.0.0979: ch_log() text can be hard to find in the log file
Bram Moolenaar <Bram@vim.org>
parents: 31289
diff changeset
180 // Prepend "ch_log()" to make it easier to find these entries in the
16fc80710970 patch 9.0.0979: ch_log() text can be hard to find in the log file
Bram Moolenaar <Bram@vim.org>
parents: 31289
diff changeset
181 // logfile.
16fc80710970 patch 9.0.0979: ch_log() text can be hard to find in the log file
Bram Moolenaar <Bram@vim.org>
parents: 31289
diff changeset
182 ch_log(channel, "ch_log(): %s", msg);
31287
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
183 }
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
184
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
185 /*
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
186 * "ch_logfile()" function
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
187 */
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
188 void
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
189 f_ch_logfile(typval_T *argvars, typval_T *rettv UNUSED)
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
190 {
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
191 char_u *fname;
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
192 char_u *opt = (char_u *)"";
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
193 char_u buf[NUMBUFLEN];
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
194
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
195 // Don't open a file in restricted mode.
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
196 if (check_restricted() || check_secure())
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
197 return;
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
198
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
199 if (in_vim9script()
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
200 && (check_for_string_arg(argvars, 0) == FAIL
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
201 || check_for_opt_string_arg(argvars, 1) == FAIL))
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
202 return;
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
203
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
204 fname = tv_get_string(&argvars[0]);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
205 if (argvars[1].v_type == VAR_STRING)
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
206 opt = tv_get_string_buf(&argvars[1], buf);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
207 ch_logfile(fname, opt);
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
208 }
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
209
fa309d9af73c patch 9.0.0977: it is not easy to see what client-server commands are doing
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
210 #endif // FEAT_EVAL