Centralize catgets() calls through MsgCat
CDE has relied upon catgets() implementations following a relaxed interpretation of the XPG internationalization standard that ignored -1, the standard error value returned by catopen, as the catalog argument. However, this same behavior causes segmentation faults with the musl C library. This patch: - Centralizes (with the exception of ToolTalk) all calls to catopen(), catgets(), and catclose() through MsgCat within the DtSvc library. - Prevents calls to catgets() and catclose() that rely upon undefined behavior. - Eliminates a number of bespoke catgets() wrappers, including multiple redundant caching implementations designed to work around a design peculiarity in HP/UX. - Eases building CDE without XPG internationalization support by providing the appropriate macros.
This commit is contained in:
committed by
Jon Trulson
parent
8278e0eae3
commit
7010b2c11b
@@ -122,7 +122,7 @@ char *nowstring (time_t * now)
|
||||
}
|
||||
time_ptr = _XLocaltime(now, localtime_buf);
|
||||
strftime (buf, sizeof (buf),
|
||||
catgets (dtsearch_catd, MS_misc, 2, "%Y/%m/%d,%H:%M:%S"),
|
||||
CATGETS(dtsearch_catd, MS_misc, 2, "%Y/%m/%d,%H:%M:%S"),
|
||||
time_ptr);
|
||||
return buf;
|
||||
} /* nowstring() */
|
||||
@@ -342,8 +342,8 @@ void *austext_malloc (size_t size, char *location, void *ignore)
|
||||
|
||||
ptr = ((aa_argv0) ? aa_argv0 : "");
|
||||
if (location == NULL)
|
||||
location = catgets (dtsearch_catd, MS_misc, 1, "<null>");
|
||||
outofmem_msg = catgets (dtsearch_catd, MS_misc, 3,
|
||||
location = CATGETS(dtsearch_catd, MS_misc, 1, "<null>");
|
||||
outofmem_msg = CATGETS(dtsearch_catd, MS_misc, 3,
|
||||
"*** %sOut of Memory at %s asking for %lu bytes! ***\n");
|
||||
fprintf (aa_stderr, outofmem_msg, ptr, location, size);
|
||||
fflush (aa_stderr);
|
||||
|
||||
Reference in New Issue
Block a user