diff --git a/src/err.h b/src/err.h index 3df3ea16..987f641e 100644 --- a/src/err.h +++ b/src/err.h @@ -230,20 +230,20 @@ EXTERN char *ErrMsg[] /* E_EXPIRED */ "Expired", /* E_CANTFORK */ "fork() failed - can't do queued reminders", /* E_CANTACCESS */ "Can't access file", -/* M_BAD_SYS_DATE */ "Illegal system date: Year is less than %d\n", -/* M_BAD_DB_FLAG */ "Unknown debug flag '%c'\n", -/* M_BAD_OPTION */ "Unknown option '%c'\n", -/* M_BAD_USER */ "Unknown user '%s'\n", -/* M_NO_CHG_GID */ "Could not change gid to %d\n", -/* M_NO_CHG_UID */ "Could not change uid to %d\n", -/* M_NOMEM_ENV */ "Out of memory for environment\n", +/* M_BAD_SYS_DATE */ "Illegal system date: Year is less than %d", +/* M_BAD_DB_FLAG */ "Unknown debug flag '%c'", +/* M_BAD_OPTION */ "Unknown option '%c'", +/* M_BAD_USER */ "Unknown user '%s'", +/* M_NO_CHG_GID */ "Could not change gid to %d", +/* M_NO_CHG_UID */ "Could not change uid to %d", +/* M_NOMEM_ENV */ "Out of memory for environment", /* E_MISS_EQ */ "Missing '=' sign", /* E_MISS_VAR */ "Missing variable name", /* E_MISS_EXPR */ "Missing expression", /* M_CANTSET_ACCESS */ "", -/* M_I_OPTION */ "Remind: '-i' option: %s\n", +/* M_I_OPTION */ "Remind: '-i' option: %s", /* E_NOREMINDERS */ "No reminders.", -/* M_QUEUED */ "%d reminder(s) queued for later today.\n", +/* M_QUEUED */ "%d reminder(s) queued for later today.", /* E_EXPECTING_NUMBER */ "Expecting number", /* M_BAD_WARN_FUNC */ "Undefined WARN function", /* E_CANT_CONVERT_TZ */ "Can't convert between time zones", diff --git a/src/files.c b/src/files.c index 9e89d1a4..2d6f37a0 100644 --- a/src/files.c +++ b/src/files.c @@ -145,7 +145,8 @@ static void OpenPurgeFile(char const *fname, char const *mode) if (DBufPuts(&fname_buf, ".purged") != OK) return; PurgeFP = fopen(DBufValue(&fname_buf), mode); if (!PurgeFP) { - fprintf(ErrFp, tr("Cannot open `%s' for writing: %s\n"), DBufValue(&fname_buf), strerror(errno)); + fprintf(ErrFp, tr("Cannot open `%s' for writing: %s"), DBufValue(&fname_buf), strerror(errno)); + fprintf(ErrFp, "\n"); } set_cloexec(PurgeFP); DBufFree(&fname_buf); @@ -325,7 +326,8 @@ int OpenFile(char const *fname) while (h) { if (!strcmp(fname, h->filename)) { if (DebugFlag & DB_TRACE_FILES) { - fprintf(ErrFp, tr("Reading `%s': Found in cache\n"), fname); + fprintf(ErrFp, tr("Reading `%s': Found in cache"), fname); + fprintf(ErrFp, "\n"); } CLine = h->cache; STRSET(FileName, fname); @@ -348,13 +350,15 @@ int OpenFile(char const *fname) PurgeFP = stdout; } if (DebugFlag & DB_TRACE_FILES) { - fprintf(ErrFp, tr("Reading `-': Reading stdin\n")); + fprintf(ErrFp, tr("Reading `-': Reading stdin")); + fprintf(ErrFp, "\n"); } } else { fp = fopen(fname, "r"); set_cloexec(fp); if (DebugFlag & DB_TRACE_FILES) { - fprintf(ErrFp, tr("Reading `%s': Opening file on disk\n"), fname); + fprintf(ErrFp, tr("Reading `%s': Opening file on disk"), fname); + fprintf(ErrFp, "\n"); } if (PurgeMode) { OpenPurgeFile(fname, "w"); @@ -401,7 +405,8 @@ static int CacheFile(char const *fname, int use_pclose) char const *s; if (DebugFlag & DB_TRACE_FILES) { - fprintf(ErrFp, tr("Caching file `%s' in memory\n"), fname); + fprintf(ErrFp, tr("Caching file `%s' in memory"), fname); + fprintf(ErrFp, "\n"); } cl = NULL; /* Create a file header */ @@ -539,7 +544,8 @@ static int PopFile(void) if (!Hush && NumIfs) { Eprint("%s", GetErr(E_MISS_ENDIF)); for (j=NumIfs-1; j >=0; j--) { - fprintf(ErrFp, tr("%s(%d): IF without ENDIF\n"), FileName, IfLinenos[j]); + fprintf(ErrFp, tr("%s(%d): IF without ENDIF"), FileName, IfLinenos[j]); + fprintf(ErrFp, "\n"); } } if (!IStackPtr) return E_EOF; @@ -760,8 +766,9 @@ static int SetupGlobChain(char const *dirname, IncludeStruct *i) while(dc) { if (!strcmp(dc->dirname, dir)) { if (DebugFlag & DB_TRACE_FILES) { - fprintf(ErrFp, tr("Found cached directory listing for `%s'\n"), + fprintf(ErrFp, tr("Found cached directory listing for `%s'"), dir); + fprintf(ErrFp, "\n"); } free(dir); i->chain = dc->chain; @@ -771,7 +778,8 @@ static int SetupGlobChain(char const *dirname, IncludeStruct *i) } if (DebugFlag & DB_TRACE_FILES) { - fprintf(ErrFp, tr("Scanning directory `%s' for *.rem files\n"), dir); + fprintf(ErrFp, tr("Scanning directory `%s' for *.rem files"), dir); + fprintf(ErrFp, "\n"); } if (ShouldCache) { @@ -785,7 +793,8 @@ static int SetupGlobChain(char const *dirname, IncludeStruct *i) } if (dc) { if (DebugFlag & DB_TRACE_FILES) { - fprintf(ErrFp, tr("Caching directory `%s' listing\n"), dir); + fprintf(ErrFp, tr("Caching directory `%s' listing"), dir); + fprintf(ErrFp, "\n"); } dc->chain = NULL; @@ -917,7 +926,8 @@ static int IncludeCmd(char const *cmd) while(h) { if (!strcmp(fname, h->filename)) { if (DebugFlag & DB_TRACE_FILES) { - fprintf(ErrFp, tr("Reading command `%s': Found in cache\n"), fname); + fprintf(ErrFp, tr("Reading command `%s': Found in cache"), fname); + fprintf(ErrFp, "\n"); } CLine = h->cache; STRSET(FileName, fname); @@ -934,8 +944,9 @@ static int IncludeCmd(char const *cmd) } if (DebugFlag & DB_TRACE_FILES) { - fprintf(ErrFp, tr("Executing `%s' for INCLUDECMD and caching as `%s'\n"), + fprintf(ErrFp, tr("Executing `%s' for INCLUDECMD and caching as `%s'"), cmd, fname); + fprintf(ErrFp, "\n"); } /* Not found in cache */ @@ -1201,7 +1212,8 @@ static int CheckSafetyAux(struct stat *statbuf) if (!geteuid()) { /* Reject files not owned by root or group/world writable */ if (statbuf->st_uid != 0) { - fprintf(ErrFp, tr("SECURITY: Won't read non-root-owned file or directory when running as root!\n")); + fprintf(ErrFp, tr("SECURITY: Won't read non-root-owned file or directory when running as root!")); + fprintf(ErrFp, "\n"); return 0; } } @@ -1211,7 +1223,8 @@ static int CheckSafetyAux(struct stat *statbuf) return 1; } if ((statbuf->st_mode & S_IWOTH)) { - fprintf(ErrFp, tr("SECURITY: Won't read world-writable file or directory!\n")); + fprintf(ErrFp, tr("SECURITY: Won't read world-writable file or directory!")); + fprintf(ErrFp, "\n"); return 0; } diff --git a/src/init.c b/src/init.c index 2245bc93..e8865493 100644 --- a/src/init.c +++ b/src/init.c @@ -217,6 +217,7 @@ void InitRemind(int argc, char const *argv[]) RealToday = SystemDate(&CurYear, &CurMon, &CurDay); if (RealToday < 0) { fprintf(ErrFp, GetErr(M_BAD_SYS_DATE), BASE); + fprintf(ErrFp, "\n"); exit(EXIT_FAILURE); } DSEToday = RealToday; @@ -643,6 +644,7 @@ void InitRemind(int argc, char const *argv[]) case 'f': case 'F': DebugFlag |= DB_TRACE_FILES; break; default: fprintf(ErrFp, GetErr(M_BAD_DB_FLAG), *(arg-1)); + fprintf(ErrFp, "\n"); } } break; @@ -678,6 +680,7 @@ void InitRemind(int argc, char const *argv[]) default: fprintf(ErrFp, GetErr(M_BAD_OPTION), *(arg-1)); + fprintf(ErrFp, "\n"); } } @@ -870,6 +873,7 @@ static void ChgUser(char const *user) if (!pwent) { fprintf(ErrFp, GetErr(M_BAD_USER), user); + fprintf(ErrFp, "\n"); exit(EXIT_FAILURE); } @@ -878,16 +882,19 @@ static void ChgUser(char const *user) #ifdef HAVE_INITGROUPS if (initgroups(pwent->pw_name, pwent->pw_gid) < 0) { fprintf(ErrFp, GetErr(M_NO_CHG_GID), pwent->pw_gid); + fprintf(ErrFp, "\n"); exit(EXIT_FAILURE); }; #endif if (setgid(pwent->pw_gid) < 0) { fprintf(ErrFp, GetErr(M_NO_CHG_GID), pwent->pw_gid); + fprintf(ErrFp, "\n"); exit(EXIT_FAILURE); } if (setuid(pwent->pw_uid) < 0) { fprintf(ErrFp, GetErr(M_NO_CHG_UID), pwent->pw_uid); + fprintf(ErrFp, "\n"); exit(EXIT_FAILURE); } } @@ -895,6 +902,7 @@ static void ChgUser(char const *user) home = malloc(strlen(pwent->pw_dir) + 6); if (!home) { fprintf(ErrFp, "%s", GetErr(M_NOMEM_ENV)); + fprintf(ErrFp, "\n"); exit(EXIT_FAILURE); } sprintf(home, "HOME=%s", pwent->pw_dir); @@ -903,6 +911,7 @@ static void ChgUser(char const *user) shell = malloc(strlen(pwent->pw_shell) + 7); if (!shell) { fprintf(ErrFp, "%s", GetErr(M_NOMEM_ENV)); + fprintf(ErrFp, "\n"); exit(EXIT_FAILURE); } sprintf(shell, "SHELL=%s", pwent->pw_shell); @@ -912,6 +921,7 @@ static void ChgUser(char const *user) username = malloc(strlen(pwent->pw_name) + 6); if (!username) { fprintf(ErrFp, "%s", GetErr(M_NOMEM_ENV)); + fprintf(ErrFp, "\n"); exit(EXIT_FAILURE); } sprintf(username, "USER=%s", pwent->pw_name); @@ -919,6 +929,7 @@ static void ChgUser(char const *user) logname= malloc(strlen(pwent->pw_name) + 9); if (!logname) { fprintf(ErrFp, "%s", GetErr(M_NOMEM_ENV)); + fprintf(ErrFp, "\n"); exit(EXIT_FAILURE); } sprintf(logname, "LOGNAME=%s", pwent->pw_name); @@ -964,6 +975,7 @@ static void InitializeVar(char const *str) varname[r++] = *str; } else { fprintf(ErrFp, GetErr(M_I_OPTION), GetErr(E_ILLEGAL_CHAR)); + fprintf(ErrFp, "\n"); return; } } @@ -977,12 +989,14 @@ static void InitializeVar(char const *str) varname[r] = 0; if (!*varname) { fprintf(ErrFp, GetErr(M_I_OPTION), GetErr(E_MISS_VAR)); + fprintf(ErrFp, "\n"); return; } if (!*str) { /* Setting a system var does require =expr on the commandline */ if (*varname == '$') { fprintf(ErrFp, GetErr(M_I_OPTION), GetErr(E_MISS_EQ)); + fprintf(ErrFp, "\n"); return; } val.type = INT_TYPE; @@ -993,40 +1007,51 @@ static void InitializeVar(char const *str) } if (r) { fprintf(ErrFp, GetErr(M_I_OPTION), GetErr(r)); + fprintf(ErrFp, "\n"); } return; } if (!*varname) { fprintf(ErrFp, GetErr(M_I_OPTION), GetErr(E_MISS_VAR)); + fprintf(ErrFp, "\n"); return; } expr = str+1; if (!*expr) { fprintf(ErrFp, GetErr(M_I_OPTION), GetErr(E_MISS_EXPR)); + fprintf(ErrFp, "\n"); return; } r=EvalExpr(&expr, &val, NULL); if (r) { fprintf(ErrFp, GetErr(M_I_OPTION), GetErr(r)); + fprintf(ErrFp, "\n"); return; } if (*varname == '$') { r=SetSysVar(varname+1, &val); DestroyValue(val); - if (r) fprintf(ErrFp, GetErr(M_I_OPTION), GetErr(r)); + if (r) { + fprintf(ErrFp, GetErr(M_I_OPTION), GetErr(r)); + fprintf(ErrFp, "\n"); + } return; } r=SetVar(varname, &val); if (r) { fprintf(ErrFp, GetErr(M_I_OPTION), GetErr(r)); + fprintf(ErrFp, "\n"); return; } r=PreserveVar(varname); - if (r) fprintf(ErrFp, GetErr(M_I_OPTION), GetErr(r)); + if (r) { + fprintf(ErrFp, GetErr(M_I_OPTION), GetErr(r)); + fprintf(ErrFp, "\n"); + } return; } @@ -1043,6 +1068,7 @@ AddTrustedUser(char const *username) pwent = getpwnam(username); if (!pwent) { fprintf(ErrFp, GetErr(M_BAD_USER), username); + fprintf(ErrFp, "\n"); exit(EXIT_FAILURE); } TrustedUsers[NumTrustedUsers] = pwent->pw_uid; diff --git a/src/main.c b/src/main.c index 744f7355..fe28bf50 100644 --- a/src/main.c +++ b/src/main.c @@ -179,6 +179,7 @@ int main(int argc, char *argv[]) printf("%s\n", GetErr(E_NOREMINDERS)); } else if (!Daemon && !NextMode && !NumTriggered) { printf(GetErr(M_QUEUED), NumQueued); + printf("\n"); } } diff --git a/src/queue.c b/src/queue.c index 1c10bc7c..da061f87 100644 --- a/src/queue.c +++ b/src/queue.c @@ -346,8 +346,9 @@ void HandleQueuedReminders(void) /* If we're a daemon, get the mod time of initial file */ if (Daemon > 0) { if (stat(InitialFile, &StatBuf)) { - fprintf(ErrFp, tr("Cannot stat %s - not running as daemon!\n"), + fprintf(ErrFp, tr("Cannot stat %s - not running as daemon!"), InitialFile); + fprintf(ErrFp, "\n"); Daemon = 0; } else FileModTime = StatBuf.st_mtime; } diff --git a/tests/test.cmp b/tests/test.cmp index 457f1354..04b83abd 100644 --- a/tests/test.cmp +++ b/tests/test.cmp @@ -24462,19 +24462,19 @@ TRANSLATE " %s(%d): ["["]#%d] %s function `%s'" "" TRANSLATE "%s function `%s' defined at %s:%d does not use its argument" "" TRANSLATE "%s function `%s' defined at %s:%d should take 1 argument but actually takes %d" "" TRANSLATE "%s is deprecated; use %s instead" "" -TRANSLATE "%s(%d): IF without ENDIF\n" "" +TRANSLATE "%s(%d): IF without ENDIF" "" TRANSLATE "(Security note: $RunOff variable tested.)" "" TRANSLATE "Accepting \"%s\" for $Latitude/$Longitude, but you should use the \"C\" locale decimal separator \".\" instead" "" -TRANSLATE "Caching directory `%s' listing\n" "" -TRANSLATE "Caching file `%s' in memory\n" "" +TRANSLATE "Caching directory `%s' listing" "" +TRANSLATE "Caching file `%s' in memory" "" TRANSLATE "Called from" "" -TRANSLATE "Cannot open `%s' for writing: %s\n" "" -TRANSLATE "Cannot stat %s - not running as daemon!\n" "" +TRANSLATE "Cannot open `%s' for writing: %s" "" +TRANSLATE "Cannot stat %s - not running as daemon!" "" TRANSLATE "Cannot use AT clause in multitrig() function" "" TRANSLATE "Do not use ["["]] around expression in SET command" "" TRANSLATE "Error: THROUGH date earlier than start date" "" -TRANSLATE "Executing `%s' for INCLUDECMD and caching as `%s'\n" "" -TRANSLATE "Found cached directory listing for `%s'\n" "" +TRANSLATE "Executing `%s' for INCLUDECMD and caching as `%s'" "" +TRANSLATE "Found cached directory listing for `%s'" "" TRANSLATE "Function `%s' defined at %s:%d should take %d argument%s, but actually takes %d" "" TRANSLATE "Function `%s' redefined (previously defined at %s:%d)" "" TRANSLATE "GetValidHebDate: Bad adarbehave value %d" "" @@ -24485,16 +24485,16 @@ TRANSLATE "No substition function `%s' defined" "" TRANSLATE "Not setting $OnceFile: Already processed a reminder with a ONCE clause" "" TRANSLATE "OMIT: UNTIL not allowed; did you mean THROUGH?" "" TRANSLATE "POP-OMIT-CONTEXT at %s:%d matches PUSH-OMIT-CONTEXT in different file: %s:%d" "" -TRANSLATE "Reading `%s': Found in cache\n" "" -TRANSLATE "Reading `%s': Opening file on disk\n" "" -TRANSLATE "Reading `-': Reading stdin\n" "" -TRANSLATE "Reading command `%s': Found in cache\n" "" +TRANSLATE "Reading `%s': Found in cache" "" +TRANSLATE "Reading `%s': Opening file on disk" "" +TRANSLATE "Reading `-': Reading stdin" "" +TRANSLATE "Reading command `%s': Found in cache" "" TRANSLATE "SATISFY: constant 0 will never be true" "" TRANSLATE "SATISFY: constant \"\" will never be true" "" TRANSLATE "SATISFY: expression has no reference to trigdate() or $T..." "" -TRANSLATE "SECURITY: Won't read non-root-owned file or directory when running as root!\n" "" -TRANSLATE "SECURITY: Won't read world-writable file or directory!\n" "" -TRANSLATE "Scanning directory `%s' for *.rem files\n" "" +TRANSLATE "SECURITY: Won't read non-root-owned file or directory when running as root!" "" +TRANSLATE "SECURITY: Won't read world-writable file or directory!" "" +TRANSLATE "Scanning directory `%s' for *.rem files" "" TRANSLATE "Undefined %s function: `%s'" "" TRANSLATE "Unmatched PUSH-OMIT-CONTEXT at %s(%d)" "" TRANSLATE "Unrecognized command; interpreting as REM" ""