VirtualBox

Changeset 2648 in kBuild for trunk/src


Ignore:
Timestamp:
Sep 9, 2012 3:22:30 AM (12 years ago)
Author:
bird
Message:

Made TRACE2 and TRACE2V safe. Fixed DEBUG bug where va_copy was missing. Introduced sh_strerror.

Location:
trunk/src/kash
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kash/bltin/printf.c

    r1233 r2648  
    5555#include <string.h>
    5656#include <unistd.h>
     57#include "shinstance.h"
    5758
    5859#ifdef __GNUC__
     
    647648                rval = 1;
    648649        } else if (errno == ERANGE) {
    649                 warnx("%s: %s", s, strerror(ERANGE));
     650                warnx("%s: %s", s, sh_strerror(psh, ERANGE));
    650651                rval = 1;
    651652        }
  • trunk/src/kash/cd.c

    r2290 r2648  
    392392                        continue;
    393393                if (!noerror)
    394                         error(psh, "getcwd() failed: %s", strerror(errno));
     394                        error(psh, "getcwd() failed: %s", sh_strerror(psh, errno));
    395395                return;
    396396        }
  • trunk/src/kash/error.c

    r2298 r2648  
    138138        }
    139139        if (sv_errno >= 0)
    140                 outfmt(&psh->errout, "%s", strerror(sv_errno));
     140                outfmt(&psh->errout, "%s", sh_strerror(psh, sv_errno));
    141141        out2c(psh, '\n');
    142142        flushout(&psh->errout);
     
    156156#ifdef DEBUG
    157157        if (msg) {
     158                va_list va2;
    158159                TRACE((psh, "exverror(%d, \"", cond));
    159                 TRACEV((psh, msg, ap));
     160                va_copy(va2, ap);
     161                TRACEV((psh, msg, va2));
     162                va_end(va2);
    160163                TRACE((psh, "\") pid=%d\n", sh_getpid(psh)));
    161164        } else
  • trunk/src/kash/exec.c

    r2642 r2648  
    11381138                                        if (!v_flag)
    11391139                                                out1fmt(psh, ": %s\n",
    1140                                                     strerror(errno));
     1140                                                    sh_strerror(psh, errno));
    11411141                                        else
    11421142                                                err = 126;
  • trunk/src/kash/jobs.c

    r2290 r2648  
    150150                if (sh_getpgid(psh, 0) != psh->rootpid && sh_setpgid(psh, 0, psh->rootpid) == -1)
    151151                        error(psh, "Cannot set process group (%s) at %d",
    152                             strerror(errno), __LINE__);
     152                            sh_strerror(psh, errno), __LINE__);
    153153                if (sh_tcsetpgrp(psh, psh->ttyfd, psh->rootpid) == -1)
    154154                        error(psh, "Cannot set tty process group (%s) at %d",
    155                             strerror(errno), __LINE__);
     155                            sh_strerror(psh, errno), __LINE__);
    156156        } else { /* turning job control off */
    157157                if (sh_getpgid(psh, 0) != psh->initialpgrp && sh_setpgid(psh, 0, psh->initialpgrp) == -1)
    158158                        error(psh, "Cannot set process group (%s) at %d",
    159                             strerror(errno), __LINE__);
     159                            sh_strerror(psh, errno), __LINE__);
    160160                if (sh_tcsetpgrp(psh, psh->ttyfd, psh->initialpgrp) == -1)
    161161                        error(psh, "Cannot set tty process group (%s) at %d",
    162                             strerror(errno), __LINE__);
     162                            sh_strerror(psh, errno), __LINE__);
    163163                shfile_close(&psh->fdtab, psh->ttyfd);
    164164                psh->ttyfd = -1;
     
    209209        if (i >= jp->nprocs) {
    210210                error(psh, "Cannot set tty process group (%s) at %d",
    211                     strerror(errno), __LINE__);
     211                    sh_strerror(psh, errno), __LINE__);
    212212        }
    213213        restartjob(psh, jp);
     
    301301                        break;
    302302        if (i >= jp->nprocs)
    303                 error(psh, "Cannot continue job (%s)", strerror(errno));
     303                error(psh, "Cannot continue job (%s)", sh_strerror(psh, errno));
    304304        for (ps = jp->ps, i = jp->nprocs ; --i >= 0 ; ps++) {
    305305                if (WIFSTOPPED(ps->status)) {
     
    485485                if (sh_tcsetpgrp(psh, psh->ttyfd, sh_getpid(psh)) == -1)
    486486                        error(psh, "Cannot set tty process group (%s) at %d",
    487                             strerror(errno), __LINE__);
     487                            sh_strerror(psh, errno), __LINE__);
    488488                TRACE((psh, "repaired tty process group\n"));
    489489                silent = 1;
     
    854854                        if (sh_tcsetpgrp(psh, psh->ttyfd, pgrp) == -1)
    855855                                error(psh, "Cannot set tty process group (%s) at %d",
    856                                     strerror(errno), __LINE__);
     856                                    sh_strerror(psh, errno), __LINE__);
    857857                }
    858858                setsignal(psh, SIGTSTP, vforked);
     
    927927                if (sh_tcsetpgrp(psh, psh->ttyfd, mypgrp) == -1)
    928928                        error(psh, "Cannot set tty process group (%s) at %d",
    929                             strerror(errno), __LINE__);
     929                            sh_strerror(psh, errno), __LINE__);
    930930        }
    931931        if (jp->state == JOBSTOPPED && psh->curjob != jp - psh->jobtab)
  • trunk/src/kash/miscbltin.c

    r2498 r2648  
    424424                        limit.rlim_cur = val;
    425425                if (sh_setrlimit(psh, l->cmd, &limit) < 0)
    426                         error(psh, "error setting limit (%s)", strerror(errno));
     426                        error(psh, "error setting limit (%s)", sh_strerror(psh, errno));
    427427        } else {
    428428                if (how & SOFT)
  • trunk/src/kash/redir.c

    r2424 r2648  
    144144                                default:
    145145                                        INTON;
    146                                         error(psh, "%d: %s", fd, strerror(errno));
     146                                        error(psh, "%d: %s", fd, sh_strerror(psh, errno));
    147147                                        /* NOTREACHED */
    148148                                }
     
    377377                if (errno == EMFILE)
    378378                        return EMPTY;
    379                 error(psh, "%d: %s", from, strerror(errno));
     379                error(psh, "%d: %s", from, sh_strerror(psh, errno));
    380380        }
    381381        return newfd;
     
    398398                if (errno == EMFILE)
    399399                        return EMPTY;
    400                 error(psh, "%d: %s", from, strerror(errno));
     400                error(psh, "%d: %s", from, sh_strerror(psh, errno));
    401401        }
    402402        return newfd;
     
    419419                if (errno == EMFILE)
    420420                        return EMPTY;
    421                 error(psh, "%d: %s", from, strerror(errno));
     421                error(psh, "%d: %s", from, sh_strerror(psh, errno));
    422422        }
    423423        return newfd;
  • trunk/src/kash/shinstance.c

    r2593 r2648  
    14171417}
    14181418
     1419
     1420/* Wrapper for strerror that makes sure it doesn't return NULL and causes the
     1421   caller or fprintf routines to crash. */
     1422const char *sh_strerror(shinstance *psh, int error)
     1423{
     1424    char *err = strerror(error);
     1425    if (!err)
     1426        return "strerror return NULL!";
     1427    (void)psh;
     1428    return err;
     1429}
     1430
  • trunk/src/kash/shinstance.h

    r2639 r2648  
    494494int sh_setrlimit(shinstance *, int, const shrlimit *);
    495495
     496/* string.h */
     497const char *sh_strerror(shinstance *, int);
    496498
    497499#ifdef DEBUG
     
    499501# define TRACE2V(param) tracev param
    500502#else
    501 # define TRACE2(param)
    502 # define TRACE2V(param)
    503 #endif
    504 
    505 #endif
     503# define TRACE2(param)  do { } while (0)
     504# define TRACE2V(param) do { } while (0)
     505#endif
     506
     507#endif
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette