VirtualBox

Changeset 2298 in kBuild


Ignore:
Timestamp:
Mar 1, 2009 5:18:30 AM (16 years ago)
Author:
bird
Message:

kash: no return indicators that works for both gcc and msc (not pretty, but wtf).

Location:
trunk/src/kash
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kash/error.c

    r1240 r2298  
    6969char *commandname;*/
    7070
    71 
    72 static void exverror(shinstance *psh, int, const char *, va_list)
    73     __attribute__((__noreturn__));
     71SH_NORETURN_1
     72static void exverror(shinstance *psh, int, const char *, va_list) SH_NORETURN_2;
    7473
    7574/*
     
    7978 */
    8079
    81 void
     80SH_NORETURN_1 void
    8281exraise(shinstance *psh, int e)
    8382{
     
    172171
    173172
    174 void
     173SH_NORETURN_1 void
    175174error(shinstance *psh, const char *msg, ...)
    176175{
     
    184183
    185184
    186 void
     185SH_NORETURN_1 void
    187186exerror(shinstance *psh, int cond, const char *msg, ...)
    188187{
     
    199198 */
    200199
    201 void
     200SH_NORETURN_1 void
    202201sh_exit(shinstance *psh, int rval)
    203202{
     
    206205}
    207206
    208 void
     207SH_NORETURN_1 void
    209208sh_err(shinstance *psh, int status, const char *fmt, ...)
    210209{
     
    217216}
    218217
    219 void
     218SH_NORETURN_1 void
    220219sh_verr(shinstance *psh, int status, const char *fmt, va_list ap)
    221220{
     
    224223}
    225224
    226 void
     225SH_NORETURN_1 void
    227226sh_errx(shinstance *psh, int status, const char *fmt, ...)
    228227{
     
    235234}
    236235
    237 void
     236SH_NORETURN_1 void
    238237sh_verrx(shinstance *psh, int status, const char *fmt, va_list ap)
    239238{
  • trunk/src/kash/error.h

    r1233 r2298  
    9898#endif
    9999
    100 void exraise(struct shinstance *, int) __attribute__((__noreturn__));
     100SH_NORETURN_1 void exraise(struct shinstance *, int) SH_NORETURN_2;
    101101void onint(struct shinstance *);
    102 void error(struct shinstance *, const char *, ...) __attribute__((__noreturn__));
    103 void exerror(struct shinstance *, int, const char *, ...) __attribute__((__noreturn__));
     102SH_NORETURN_1 void error(struct shinstance *, const char *, ...) SH_NORETURN_2;
     103SH_NORETURN_1 void exerror(struct shinstance *, int, const char *, ...) SH_NORETURN_2;
    104104const char *errmsg(struct shinstance *, int, int);
    105105
    106 void sh_err(struct shinstance *, int, const char *, ...) __attribute__((__noreturn__));
    107 void sh_verr(struct shinstance *, int, const char *, va_list) __attribute__((__noreturn__));
    108 void sh_errx(struct shinstance *, int, const char *, ...) __attribute__((__noreturn__));
    109 void sh_verrx(struct shinstance *, int, const char *, va_list) __attribute__((__noreturn__));
     106SH_NORETURN_1 void sh_err(struct shinstance *, int, const char *, ...) SH_NORETURN_2;
     107SH_NORETURN_1 void sh_verr(struct shinstance *, int, const char *, va_list) SH_NORETURN_2;
     108SH_NORETURN_1 void sh_errx(struct shinstance *, int, const char *, ...) SH_NORETURN_2;
     109SH_NORETURN_1 void sh_verrx(struct shinstance *, int, const char *, va_list) SH_NORETURN_2;
    110110void sh_warn(struct shinstance *, const char *, ...);
    111111void sh_vwarn(struct shinstance *, const char *, va_list);
     
    113113void sh_vwarnx(struct shinstance *, const char *, va_list);
    114114
    115 void sh_exit(struct shinstance *, int) __attribute__((__noreturn__));
     115SH_NORETURN_1 void sh_exit(struct shinstance *, int) SH_NORETURN_2;
    116116
    117117
  • trunk/src/kash/exec.c

    r2290 r2298  
    117117 */
    118118
    119 void
     119SH_NORETURN_1 void
    120120shellexec(shinstance *psh, char **argv, char **envp, const char *path, int idx, int vforked)
    121121{
  • trunk/src/kash/exec.h

    r1233 r2298  
    6969#endif
    7070
    71 void shellexec(struct shinstance *, char **, char **, const char *, int, int)
    72     __attribute__((__noreturn__));
     71SH_NORETURN_1 void shellexec(struct shinstance *, char **, char **, const char *, int, int) SH_NORETURN_2;
    7372char *padvance(struct shinstance *, const char **, const char *);
    7473int hashcmd(struct shinstance *, int, char **);
  • trunk/src/kash/main.c

    r2294 r2298  
    8585STATIC char *find_dot_file(struct shinstance *, char *);
    8686int main(int, char **, char **);
    87 int shell_main(shinstance *, int, char **);
     87SH_NORETURN_1 void shell_main(shinstance *, int, char **) SH_NORETURN_2;
    8888#ifdef _MSC_VER
    8989extern void init_syntax(void);
     
    134134                return 2;
    135135        shthread_set_shell(psh);
    136         return shell_main(psh, argc, psh->argptr);
    137 }
    138 
    139 int
     136        shell_main(psh, argc, psh->argptr);
     137        /* Not reached. */
     138        return 89;
     139}
     140
     141SH_NORETURN_1 void
    140142shell_main(shinstance *psh, int argc, char **argv)
    141143{
     
    251253        exitshell(psh, psh->exitstatus);
    252254        /* NOTREACHED */
    253         return 1;
    254255}
    255256
  • trunk/src/kash/parser.c

    r2290 r2298  
    116116STATIC int readtoken1(shinstance *, int, char const *, char *, int);
    117117STATIC int noexpand(shinstance *, char *);
    118 STATIC void synexpect(shinstance *, int) __attribute__((__noreturn__));
    119 STATIC void synerror(shinstance *, const char *) __attribute__((__noreturn__));
     118SH_NORETURN_1 STATIC void synexpect(shinstance *, int) SH_NORETURN_2;
     119SH_NORETURN_1 STATIC void synerror(shinstance *, const char *) SH_NORETURN_2;
    120120STATIC void setprompt(shinstance *, int);
    121121
     
    15961596 */
    15971597
    1598 STATIC void
     1598SH_NORETURN_1 STATIC void
    15991599synexpect(shinstance *psh, int token)
    16001600{
     
    16121612
    16131613
    1614 STATIC void
     1614SH_NORETURN_1 STATIC void
    16151615synerror(shinstance *psh, const char *msg)
    16161616{
  • trunk/src/kash/shfile.c

    r2297 r2298  
    625625    SecurityAttributes.bInheritHandle = TRUE;
    626626
    627     if (!CreatePipe(&hRead, &hWrite, &SecurityAttributes, 4096))
     627    fds[1] = fds[0] = -1;
     628    if (CreatePipe(&hRead, &hWrite, &SecurityAttributes, 4096))
    628629    {
    629630        fds[0] = shfile_insert(pfdtab, (intptr_t)hRead, O_RDONLY, -1, "shfile_pipe");
     
    637638# else
    638639    int native_fds[2];
     640
     641    fds[1] = fds[0] = -1;
    639642    if (!pipe(native_fds))
    640643    {
    641         fds[1] = -1;
    642644        fds[0] = shfile_insert(pfdtab, native_fds[0], O_RDONLY, -1, "shfile_pipe");
    643645        if (fds[0] != -1)
     
    673675            rc = -1;
    674676        }
     677    }
     678    else
     679    {
     680# if K_OS == K_OS_WINDOWS
     681        errno = shfile_dos2errno(GetLastError());
     682# endif
     683        rc = -1;
    675684    }
    676685
  • trunk/src/kash/shinstance.c

    r2296 r2298  
    744744}
    745745
    746 void sh_abort(shinstance *psh)
     746SH_NORETURN_1 void sh_abort(shinstance *psh)
    747747{
    748748    shsigset_t set;
     
    910910    return 0;
    911911}
     912#include <setjmp.h>
    912913
    913914pid_t sh_fork(shinstance *psh)
     
    921922#elif K_OS == K_OS_WINDOWS //&& defined(SH_FORKED_MODE)
    922923    pid = shfork_do_it(psh);
    923 # ifdef DEBUG
    924     if (!pid)
    925         opentrace(psh);
    926 # endif
    927924
    928925#elif defined(SH_STUB_MODE) || defined(SH_FORKED_MODE)
     
    10691066}
    10701067
    1071 void sh__exit(shinstance *psh, int rc)
     1068SH_NORETURN_1 void sh__exit(shinstance *psh, int rc)
    10721069{
    10731070    TRACE2((psh, "sh__exit(%d)\n", rc));
  • trunk/src/kash/shinstance.h

    r2296 r2298  
    390390int sh_sigismember(shsigset_t const *, int);
    391391int sh_sigprocmask(shinstance *, int, shsigset_t const *, shsigset_t *);
    392 void sh_abort(shinstance *) __attribute__((__noreturn__));
     392SH_NORETURN_1 void sh_abort(shinstance *) SH_NORETURN_2;
    393393void sh_raise_sigint(shinstance *);
    394394int sh_kill(shinstance *, pid_t, int);
     
    438438pid_t sh_fork(shinstance *);
    439439pid_t sh_waitpid(shinstance *, pid_t, int *, int);
    440 void sh__exit(shinstance *, int) __attribute__((__noreturn__));
     440SH_NORETURN_1 void sh__exit(shinstance *, int) SH_NORETURN_2;
    441441int sh_execve(shinstance *, const char *, const char * const*, const char * const *);
    442442uid_t sh_getuid(shinstance *);
  • trunk/src/kash/shtypes.h

    r2243 r2298  
    113113} shsigaction_t;
    114114
     115/* SH_NORETURN_1 must be both on prototypes and definitions, while
     116   SH_NORETURN_2 should at least be on the prototype. */
     117#ifdef _MSC_VER
     118# define SH_NORETURN_1 __declspec(noreturn)
     119# define SH_NORETURN_2
     120#else
     121# define SH_NORETURN_1
     122# define SH_NORETURN_2 __attribute__((__noreturn__));
    115123#endif
    116124
     125#endif
     126
  • trunk/src/kash/trap.c

    r2290 r2298  
    434434 */
    435435
    436 void
     436SH_NORETURN_1 void
    437437exitshell(shinstance *psh, int status)
    438438{
  • trunk/src/kash/trap.h

    r1233 r2298  
    4444void dotrap(struct shinstance *);
    4545void setinteractive(struct shinstance *, int);
    46 void exitshell(struct shinstance *, int) __attribute__((__noreturn__));
     46SH_NORETURN_1 void exitshell(struct shinstance *, int) SH_NORETURN_2;
Note: See TracChangeset for help on using the changeset viewer.

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