introduce mksh_drvltr(s) short-hand macro

This commit is contained in:
tg 2017-10-11 20:29:05 +00:00
parent f20af3a14f
commit 2b329c9343
1 changed files with 7 additions and 5 deletions

12
sh.h
View File

@ -182,7 +182,7 @@
#endif
#ifdef EXTERN
__RCSID("$MirOS: src/bin/mksh/sh.h,v 1.841 2017/08/29 13:38:31 tg Exp $");
__RCSID("$MirOS: src/bin/mksh/sh.h,v 1.842 2017/10/11 20:29:05 tg Exp $");
#endif
#define MKSH_VERSION "R56 2017/08/29"
@ -2734,11 +2734,14 @@ extern int tty_init_fd(void); /* initialise tty_fd, tty_devtty */
#endif
#ifdef MKSH_DOSPATH
#define mksh_drvltr(s) __extension__({ \
const char *mksh_drvltr_s = (s); \
(ctype(mksh_drvltr_s[0], C_ALPHA) && mksh_drvltr_s[1] == ':'); \
})
#define mksh_abspath(s) __extension__({ \
const char *mksh_abspath_s = (s); \
(mksh_cdirsep(mksh_abspath_s[0]) || \
(ctype(mksh_abspath_s[0], C_ALPHA) && \
mksh_abspath_s[1] == ':')); \
mksh_drvltr(mksh_abspath_s)); \
})
#define mksh_cdirsep(c) __extension__({ \
char mksh_cdirsep_c = (c); \
@ -2746,8 +2749,7 @@ extern int tty_init_fd(void); /* initialise tty_fd, tty_devtty */
})
#define mksh_sdirsep(s) __extension__({ \
const char *mksh_sdirsep_s = (s); \
((char *)((ctype(mksh_sdirsep_s[0], C_ALPHA) && \
mksh_sdirsep_s[1] == ':' && \
((char *)((mksh_drvltr(mksh_sdirsep_s) && \
!mksh_cdirsep(mksh_sdirsep_s[2])) ? \
(mksh_sdirsep_s + 1) : strpbrk(mksh_sdirsep_s, "/\\"))); \
})