t* My version of sent
       
   URI git clone git://git.codevoid.de/sent-sdk.git
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 278b8da82090abf21f655532f7f6501ebc850958
   DIR parent 6df3d039a02f6304fd6769717f8613f6012d2eb6
   URI Author: Markus Teich <markus.teich@stusta.mhn.de>
       Date:   Sat,  2 Sep 2017 01:24:47 +0200
       
       migrate to new arg.h
       
       Diffstat:
         M arg.h                               |      98 +++++++++++++------------------
       
       1 file changed, 42 insertions(+), 56 deletions(-)
       ---
   DIR diff --git a/arg.h b/arg.h
       t@@ -1,63 +1,49 @@
        /*
       - * Copy me if you can.
       - * by 20h
       + * ISC-License
       + *
       + * Copyright 2017 Laslo Hunhold <dev@frign.de>
       + *
       + * Permission to use, copy, modify, and/or distribute this software for any
       + * purpose with or without fee is hereby granted, provided that the above
       + * copyright notice and this permission notice appear in all copies.
       + *
       + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
       + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
       + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
       + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
       + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
       + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
       + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
         */
       -
       -#ifndef ARG_H__
       -#define ARG_H__
       +#ifndef ARG_H
       +#define ARG_H
        
        extern char *argv0;
        
       -/* use main(int argc, char *argv[]) */
       -#define ARGBEGIN        for (argv0 = *argv, argv++, argc--;\
       -                                        argv[0] && argv[0][0] == '-'\
       -                                        && argv[0][1];\
       -                                        argc--, argv++) {\
       -                                char argc_;\
       -                                char **argv_;\
       -                                int brk_;\
       -                                if (argv[0][1] == '-' && argv[0][2] == '\0') {\
       -                                        argv++;\
       -                                        argc--;\
       -                                        break;\
       -                                }\
       -                                for (brk_ = 0, argv[0]++, argv_ = argv;\
       -                                                argv[0][0] && !brk_;\
       -                                                argv[0]++) {\
       -                                        if (argv_ != argv)\
       -                                                break;\
       -                                        argc_ = argv[0][0];\
       -                                        switch (argc_)
       -
       -/* Handles obsolete -NUM syntax */
       -#define ARGNUM                                case '0':\
       -                                        case '1':\
       -                                        case '2':\
       -                                        case '3':\
       -                                        case '4':\
       -                                        case '5':\
       -                                        case '6':\
       -                                        case '7':\
       -                                        case '8':\
       -                                        case '9'
       -
       -#define ARGEND                        }\
       -                        }
       -
       -#define ARGC()                argc_
       -
       -#define ARGNUMF(base)        (brk_ = 1, estrtol(argv[0], (base)))
       -
       -#define EARGF(x)        ((argv[0][1] == '\0' && argv[1] == NULL)?\
       -                                ((x), abort(), (char *)0) :\
       -                                (brk_ = 1, (argv[0][1] != '\0')?\
       -                                        (&argv[0][1]) :\
       -                                        (argc--, argv++, argv[0])))
       -
       -#define ARGF()                ((argv[0][1] == '\0' && argv[1] == NULL)?\
       -                                (char *)0 :\
       -                                (brk_ = 1, (argv[0][1] != '\0')?\
       -                                        (&argv[0][1]) :\
       -                                        (argc--, argv++, argv[0])))
       +/* int main(int argc, char *argv[]) */
       +#define ARGBEGIN for (argv0 = *argv, *argv ? (argc--, argv++) : ((void *)0);      \
       +                      *argv && (*argv)[0] == '-' && (*argv)[1]; argc--, argv++) { \
       +                         int i_, argused_;                                         \
       +                         if ((*argv)[1] == '-' && !(*argv)[2]) {                   \
       +                                 argc--, argv++;                                   \
       +                                 break;                                            \
       +                         }                                                         \
       +                         for (i_ = 1, argused_ = 0; (*argv)[i_]; i_++) {           \
       +                                 switch((*argv)[i_])
       +#define ARGEND                   if (argused_) {                                   \
       +                                         if ((*argv)[i_ + 1]) {                    \
       +                                                 break;                            \
       +                                         } else {                                  \
       +                                                 argc--, argv++;                   \
       +                                                 break;                            \
       +                                         }                                         \
       +                                 }                                                 \
       +                         }                                                         \
       +                 }
       +#define ARGC()   ((*argv)[i_])
       +#define ARGF_(x) (((*argv)[i_ + 1]) ? (argused_ = 1, &((*argv)[i_ + 1])) :        \
       +                  (*(argv + 1))     ? (argused_ = 1, *(argv + 1))        : (x))
       +#define EARGF(x) ARGF_(((x), exit(1), (char *)0))
       +#define ARGF()   ARGF_((char *)0)
        
        #endif