Changeset 3192 for trunk/src/kmk/kmkbuiltin/sleep.c
- Timestamp:
- Mar 26, 2018, 10:25:56 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kmk/kmkbuiltin/sleep.c
r2413 r3192 40 40 #endif 41 41 42 #include "err.h" 42 43 #include "../kmkbuiltin.h" 43 44 44 45 45 static const char *name(const char *pszName)46 static int kmk_builtin_sleep_usage(PKMKBUILTINCTX pCtx, int fIsErr) 46 47 { 47 const char *psz = strrchr(pszName, '/'); 48 #if defined(_MSC_VER) || defined(__OS2__) 49 const char *psz2 = strrchr(pszName, '\\'); 50 if (!psz2) 51 psz2 = strrchr(pszName, ':'); 52 if (psz2 && (!psz || psz2 > psz)) 53 psz = psz2; 54 #endif 55 return psz ? psz + 1 : pszName; 56 } 57 58 59 static int usage(FILE *pOut, const char *argv0) 60 { 61 argv0 = name(argv0); 62 fprintf(pOut, 63 "usage: %s <seconds>[s]\n" 64 " or: %s <milliseconds>ms\n" 65 " or: %s <minutes>m\n" 66 " or: %s <hours>h\n" 67 " or: %s <days>d\n" 68 " or: %s --help\n" 69 " or: %s --version\n" 70 "\n" 71 "Only integer values are accepted.\n" 72 , 73 argv0, argv0, argv0, argv0, argv0, argv0, argv0); 48 kmk_builtin_ctx_printf(pCtx, fIsErr, 49 "usage: %s <seconds>[s]\n" 50 " or: %s <milliseconds>ms\n" 51 " or: %s <minutes>m\n" 52 " or: %s <hours>h\n" 53 " or: %s <days>d\n" 54 " or: %s --help\n" 55 " or: %s --version\n" 56 "\n" 57 "Only integer values are accepted.\n" 58 , 59 pCtx->pszProgName, pCtx->pszProgName, pCtx->pszProgName, pCtx->pszProgName, 60 pCtx->pszProgName, pCtx->pszProgName, pCtx->pszProgName); 74 61 return 1; 75 62 } 76 63 77 64 78 int kmk_builtin_sleep(int argc, char **argv, char **envp )65 int kmk_builtin_sleep(int argc, char **argv, char **envp, PKMKBUILTINCTX pCtx) 79 66 { 80 67 long cMsToSleep; … … 88 75 */ 89 76 if (argc != 2) 90 return usage(stderr, argv[0]);77 return kmk_builtin_sleep_usage(pCtx, 1); 91 78 92 79 /* help request */ … … 96 83 || !strcmp(argv[1], "--help")) 97 84 { 98 usage(stdout, argv[0]);85 kmk_builtin_sleep_usage(pCtx, 0); 99 86 return 0; 100 87 } … … 121 108 cMsToSleep = strtol(pszInterval, &pszSuff, 0); 122 109 if (pszSuff == pszInterval) 123 { 124 fprintf(stderr, "%s: malformed interval '%s'!\n", name(argv[0]), pszInterval); 125 return 1; 126 } 110 return errx(pCtx, 1, "malformed interval '%s'!\n", pszInterval); 127 111 128 112 while (isspace(*pszSuff)) … … 142 126 { 143 127 if (!isspace(pszSuff[i])) 144 { 145 fprintf(stderr, "%s: malformed interval '%s'!\n", name(argv[0]), pszInterval); 146 return 1; 147 } 128 return errx(pCtx, 1, "malformed interval '%s'!\n", pszInterval); 148 129 i++; 149 130 } … … 160 141 ulFactor = 24*60*60*1000; 161 142 else 162 { 163 fprintf(stderr, "%s: unknown suffix '%.*s'!\n", name(argv[0]), cchSuff, pszSuff); 164 return 1; 165 } 143 return errx(pCtx, 1, "unknown suffix '%.*s'!\n", cchSuff, pszSuff); 166 144 } 167 145 … … 169 147 cMsToSleep *= ulFactor; 170 148 if ((cMsToSleep / ulFactor) != (unsigned long)lTmp) 171 { 172 fprintf(stderr, "%s: time interval overflow!\n", name(argv[0])); 173 return 1; 174 } 149 return errx(pCtx, 1, "time interval overflow!\n"); 175 150 176 151 /* … … 195 170 } 196 171 172 #ifdef KMK_BUILTIN_STANDALONE 173 int main(int argc, char **argv, char **envp) 174 { 175 KMKBUILTINCTX Ctx = { "kmk_sleep", NULL }; 176 return kmk_builtin_sleep(argc, argv, envp, &Ctx); 177 } 178 #endif 179
Note:
See TracChangeset
for help on using the changeset viewer.