diff options
Diffstat (limited to 'Src/utils.c')
| -rw-r--r-- | Src/utils.c | 31 |
1 files changed, 15 insertions, 16 deletions
diff --git a/Src/utils.c b/Src/utils.c index a1d7c8cc2..1130415db 100644 --- a/Src/utils.c +++ b/Src/utils.c @@ -313,12 +313,12 @@ zerrmsg(FILE *file, const char *fmt, va_list ap) switch (*fmt++) { case 's': str = va_arg(ap, const char *); - nicezputs(str, file); + nicezputs(str ? str : "(null)", file); break; case 'l': { str = va_arg(ap, const char *); num = va_arg(ap, int); - fwrite(str, num, 1, file); + fwrite(str ? str : "(null)", num, 1, file); break; } case 'L': @@ -342,12 +342,8 @@ zerrmsg(FILE *file, const char *fmt, va_list ap) break; case 'c': num = va_arg(ap, int); -#ifdef MULTIBYTE_SUPPORT - mb_charinit(); - zputs(wcs_nicechar(num, NULL, NULL), file); -#else - zputs(nicechar(num), file); -#endif + MB_CHARINIT(); + zputs(MB_NICECHAR(num), file); break; case 'e': /* print the corresponding message for this errno */ @@ -760,12 +756,13 @@ zwcwidth(wint_t wc) char * pathprog(char *prog, char **namep) { - char **pp, ppmaxlen = 0, *buf, *funmeta; + char **pp, *buf, *funmeta; + size_t ppmaxlen = 0; struct stat st; for (pp = path; *pp; pp++) { - int len = strlen(*pp); + size_t len = strlen(*pp); if (len > ppmaxlen) ppmaxlen = len; } @@ -1257,7 +1254,8 @@ getnameddir(char *name) /* Check if there is a scalar parameter with this name whose value * * begins with a `/'. If there is, add it to the hash table and * * return the new value. */ - if ((pm = (Param) paramtab->getnode(paramtab, name)) && + if ((pm = (Param) realparamtab->getnode2(realparamtab, name)) && + !pm->level && (PM_TYPE(pm->node.flags) == PM_SCALAR) && (str = getsparam(name)) && *str == '/') { pm->node.flags |= PM_NAMEDDIR; @@ -1645,7 +1643,9 @@ checkmailpath(char **s) char buf[PATH_MAX * 2 + 1], **arr, **ap; int buflen, ct = 1; - if (lock) { + if (!lock) + zerr("%e: %s", errno, *s); + else { char *fn; pushheap(); @@ -1833,7 +1833,7 @@ adjustlines(int signalled) int oldlines = zterm_lines; #ifdef TIOCGWINSZ - if (signalled || zterm_lines <= 0) + if ((signalled && !zterm_lines_preserve) || zterm_lines <= 0) zterm_lines = shttyinfo.winsize.ws_row; else shttyinfo.winsize.ws_row = zterm_lines; @@ -1858,7 +1858,7 @@ adjustcolumns(int signalled) int oldcolumns = zterm_columns; #ifdef TIOCGWINSZ - if (signalled || zterm_columns <= 0) + if ((signalled && !zterm_columns_preserve) || zterm_columns <= 0) zterm_columns = shttyinfo.winsize.ws_col; else shttyinfo.winsize.ws_col = zterm_columns; @@ -7429,8 +7429,7 @@ lchdir(char const *path, struct dirsav *d, int hard) #endif } else { level = 0; - if (!d->dev && !d->ino) { - stat(".", &st1); + if (!d->dev && !d->ino && !stat(".", &st1)) { d->dev = st1.st_dev; d->ino = st1.st_ino; } |
