2020#define ARG_LONG 0
2121#define ARG_SHORT 1
2222
23+ #if __STDC_VERSION__ >= 199903L
24+ # define ARG_INLINE inline
25+ #else
26+ # define ARG_INLINE
27+ #endif
28+
2329/* A simple implementation of some important "string.h" functions */
2430#ifdef ARG_STANDALONE
2531# define ARG_ASSERT (x )
2834# define ARG_MEMCPY (dest , src , n ) arg_memcpy(dest, src, n)
2935# define ARG_STRCMP (a , b ) arg_strcmp(a, b)
3036
31- static size_t arg_strlen (char * str ) {
37+ static ARG_INLINE size_t arg_strlen (char * str ) {
3238 size_t len = 0 ;
3339 while (* str ) {
3440 ++ str ; ++ len ;
3541 }
3642 return len ;
3743}
3844
39- static char * arg_strcpy (char * dest , char * src ) {
45+ static ARG_INLINE char * arg_strcpy (char * dest , char * src ) {
4046 while (* src ) {
4147 * dest = * src ;
4248 ++ dest ; ++ src ;
@@ -45,15 +51,15 @@ static char * arg_strcpy (char * dest, char * src) {
4551 return dest ;
4652}
4753
48- static void * arg_memcpy (void * dest , void * src , size_t n ) {
49- while (* dest ) {
50- * (char )dest = * (char * )src ;
54+ static ARG_INLINE void * arg_memcpy (void * dest , void * src , size_t n ) {
55+ while (* ( char * ) dest ) {
56+ * (char * )dest = * (char * )src ;
5157 ++ dest ; ++ src ;
5258 }
5359 return dest ;
5460}
5561
56- static int arg_strcmp (char * f , char * s ) {
62+ static ARG_INLINE int arg_strcmp (char * f , char * s ) {
5763 while (* f && * s ) {
5864 if (!(* f == * s )) {
5965 break ;
@@ -75,23 +81,17 @@ static int arg_strcmp (char * f, char * s) {
7581
7682#define ARG_STREQ (a , b ) (ARG_STRCMP(a, b) == 0)
7783
78- #if __STDC_VERSION__ >= 199903L
79- # define ARG_INLINE inline
80- #else
81- # define ARG_INLINE
82- #endif
83-
84- arg_return arg_string_handler (void * data_ptr , size_t blksize , void * retval ) {
85- void * * _retval = (void * * )retval ;
84+ arg_return arg_string_handler (char * data_ptr , size_t blksize , void * retval ) {
85+ register void * * _retval = (void * * )retval ;
8686 * _retval = data_ptr ;
8787 return 0 ;
8888}
89- arg_return arg_strcpy_handler (void * data_ptr , size_t blksize , void * retval ) {
89+ arg_return arg_strcpy_handler (char * data_ptr , size_t blksize , void * retval ) {
9090 if (blksize == 0 ) {
9191 retval = NULL ;
9292 return 0 ;
9393 }
94- ARG_STRCPY ((char * )retval , ( char * ) data_ptr );
94+ ARG_STRCPY ((char * )retval , data_ptr );
9595 return 0 ;
9696}
9797
@@ -108,7 +108,7 @@ struct arg_state {
108108};
109109
110110static ARG_INLINE size_t arg_list_len (arg_list list ) {
111- size_t r = 0 ;
111+ register size_t r = 0 ;
112112 while (* (struct arg_argument * * )list != NULL ) {
113113 ++ r ; ++ list ;
114114 }
@@ -212,8 +212,8 @@ static ARG_INLINE arg_return arg_parse_short (struct arg_state * state) {
212212}
213213
214214static ARG_INLINE arg_return arg_parse_long (struct arg_state * state ) {
215- size_t i ;
216- arg_return code ;
215+ register size_t i ;
216+ register arg_return code ;
217217 for (i = 0 ; i < state -> len ; ++ i ) {
218218 if (ARG_STREQ (state -> list [i ].long_arg , * state -> argv )) {
219219 state -> ptr = & state -> list [i ];
0 commit comments