Don't require any translation strings to include a trailing "\n"

This commit is contained in:
Dianne Skoll
2025-01-14 13:46:23 -05:00
parent 96c11e89eb
commit c2ec4e9d29
6 changed files with 80 additions and 39 deletions
+9 -9
View File
@@ -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",
+26 -13
View File
@@ -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;
}
+28 -2
View File
@@ -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;
+1
View File
@@ -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");
}
}
+2 -1
View File
@@ -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;
}