diff -u op-1.29/main.c op-1.29-new/main.c
|
old
|
new
|
|
| 85 | 85 | int gargc = -1; |
| 86 | 86 | char **gargv = NULL; |
| 87 | 87 | sigset_t sig_mask, old_sig_mask; |
| | 88 | FILE *logfile = NULL; |
| 88 | 89 | |
| 89 | 90 | void Usage() |
| 90 | 91 | { |
| … |
… |
|
| 772 | 773 | char *new_envp[MAXENV]; |
| 773 | 774 | char *new_argv[MAXARG]; |
| 774 | 775 | char str[MAXSTRLEN]; |
| | 776 | char *logfilename; |
| 775 | 777 | struct stat st; |
| | 778 | struct timeval tv; |
| | 779 | struct tm *tmsp; |
| | 780 | struct timezone tz; |
| 776 | 781 | |
| 777 | 782 | #ifdef XAUTH |
| 778 | 783 | if (getenv("DISPLAY") != NULL && (cp = FindOpt(cmd, "xauth")) != NULL) { |
| … |
… |
|
| 941 | 946 | minimum_logging_level = LOG_NOTICE; |
| 942 | 947 | } |
| 943 | 948 | |
| | 949 | /* option "log=syslog" enable logging via syslog() */ |
| | 950 | /* option "log=<dirname>" enable logging in filename <dirname>/opxxx */ |
| | 951 | /* where xxx is the day in year number */ |
| | 952 | |
| | 953 | if ((cp = FindOpt(cmd, "log")) != NULL) |
| | 954 | { |
| | 955 | if ((cp = GetField(cp, str, MAXSTRLEN)) != NULL) |
| | 956 | { |
| | 957 | if (strcmp(str, "syslog") != 0) |
| | 958 | { |
| | 959 | logfilename = malloc(strlen(str) + 11); |
| | 960 | sprintf(logfilename, str); |
| | 961 | |
| | 962 | gettimeofday(&tv, &tz); |
| | 963 | tmsp = localtime(&tv.tv_sec); |
| | 964 | sprintf(logfilename + strlen(str), "/op%d.log", tmsp->tm_yday + 1); |
| | 965 | if ((logfile = fopen(logfilename, "a")) == NULL) |
| | 966 | fatal(1, "cannot open logfile '%s', aborting.", logfilename); |
| | 967 | chmod(logfilename, 0640); |
| | 968 | } |
| | 969 | } |
| | 970 | else |
| | 971 | logger(LOG_ERR, "missing \"log\" directory, syslog assumed."); |
| | 972 | } |
| | 973 | |
| 944 | 974 | if (FindOpt(cmd, "environment") == NULL) { |
| 945 | 975 | for (i = 0; i < cmd->nopts; i++) { |
| 946 | 976 | if (cmd->opts[i][0] != '$') |
| … |
… |
|
| 1144 | 1174 | int vlogger(unsigned level, const char *format, va_list args) { |
| 1145 | 1175 | char buffer[MAXSTRLEN], buffer2[MAXSTRLEN], buffer3[MAXSTRLEN]; |
| 1146 | 1176 | char *username = "unknown"; |
| | 1177 | struct tm *t; |
| | 1178 | time_t curtime; |
| 1147 | 1179 | |
| 1148 | 1180 | if (level >= minimum_logging_level) return -1; |
| 1149 | 1181 | |
| … |
… |
|
| 1165 | 1197 | format_cmd(gargc, gargv, buffer3, MAXSTRLEN), |
| 1166 | 1198 | buffer2); |
| 1167 | 1199 | #endif |
| 1168 | | syslog(level, "%s", buffer); |
| | 1200 | if (logfile == NULL) |
| | 1201 | syslog(level, "%s", buffer); |
| | 1202 | else |
| | 1203 | { |
| | 1204 | curtime = time(NULL); |
| | 1205 | t = localtime(&curtime); |
| | 1206 | fprintf(logfile, "[%02d/%02d/%04d %02d:%02d:%02d] ", |
| | 1207 | t->tm_mday, t->tm_mon + 1, t->tm_year + 1900, |
| | 1208 | t->tm_hour, t->tm_min, t->tm_sec); |
| | 1209 | fprintf(logfile, "%s\n", buffer); |
| | 1210 | fflush(logfile); |
| | 1211 | } |
| | 1212 | |
| 1169 | 1213 | return -1; |
| 1170 | 1214 | } |
| 1171 | 1215 | |
| … |
… |
|
| 1193 | 1237 | va_end(ap); |
| 1194 | 1238 | exit(1); |
| 1195 | 1239 | } |
| 1196 | | |