From 2b00b4311ecf4c6f6331f8c969934fa792f7e15c Mon Sep 17 00:00:00 2001 From: Ron Yorston Date: Fri, 16 Aug 2024 11:19:01 +0100 Subject: win32: code shrink Add the FAST_FUNC qualifier to several Windows-specific functions. This has no effect in 64-bit builds but saves 336 bytes for 32-bit. --- include/mingw.h | 34 +++++++++++++++++----------------- libbb/get_last_path_component.c | 2 +- win32/mingw.c | 26 +++++++++++++------------- win32/process.c | 4 ++-- win32/winansi.c | 2 +- 5 files changed, 34 insertions(+), 34 deletions(-) diff --git a/include/mingw.h b/include/mingw.h index 104ca3b2e..adb810ec5 100644 --- a/include/mingw.h +++ b/include/mingw.h @@ -633,27 +633,27 @@ ULONGLONG CompatGetTickCount64(void); ssize_t get_random_bytes(void *buf, ssize_t count); int enumerate_links(const char *file, char *name); -int unc_root_len(const char *dir); -int root_len(const char *path); -const char *get_system_drive(void); +int unc_root_len(const char *dir) FAST_FUNC; +int root_len(const char *path) FAST_FUNC; +const char *get_system_drive(void) FAST_FUNC; int chdir_system_drive(void); -char *xabsolute_path(char *path); -char *get_drive_cwd(const char *path, char *buffer, int size); -void fix_path_case(char *path); -void make_sparse(int fd, off_t start, off_t end); -int terminal_mode(int reset); -int unix_path(const char *path); -int has_path(const char *file); -int is_relative_path(const char *path); -char *get_last_slash(const char *path); -const char *applet_to_exe(const char *name); +char *xabsolute_path(char *path) FAST_FUNC; +char *get_drive_cwd(const char *path, char *buffer, int size) FAST_FUNC; +void fix_path_case(char *path) FAST_FUNC; +void make_sparse(int fd, off_t start, off_t end) FAST_FUNC; +int terminal_mode(int reset) FAST_FUNC; +int unix_path(const char *path) FAST_FUNC; +int has_path(const char *file) FAST_FUNC; +int is_relative_path(const char *path) FAST_FUNC; +char *get_last_slash(const char *path) FAST_FUNC; +const char *applet_to_exe(const char *name) FAST_FUNC; char *get_user_name(void); -char *quote_arg(const char *arg); -char *find_first_executable(const char *name); -char *xappendword(const char *str, const char *word); +char *quote_arg(const char *arg) FAST_FUNC; +char *find_first_executable(const char *name) FAST_FUNC; +char *xappendword(const char *str, const char *word) FAST_FUNC; int windows_env(void); void change_critical_error_dialogs(const char *newval) FAST_FUNC; -char *exe_relative_path(const char *tail); +char *exe_relative_path(const char *tail) FAST_FUNC; enum { ELEVATED_PRIVILEGE = 1, ADMIN_ENABLED = 2 diff --git a/libbb/get_last_path_component.c b/libbb/get_last_path_component.c index 9d017ab7f..46a87d7fc 100644 --- a/libbb/get_last_path_component.c +++ b/libbb/get_last_path_component.c @@ -24,7 +24,7 @@ const char* FAST_FUNC bb_basename(const char *name) } #if ENABLE_PLATFORM_MINGW32 -char *get_last_slash(const char *path) +char * FAST_FUNC get_last_slash(const char *path) { const char *start = path + root_len(path); char *slash = strrchr(start, '/'); diff --git a/win32/mingw.c b/win32/mingw.c index dfe38734a..c14ad1f1f 100644 --- a/win32/mingw.c +++ b/win32/mingw.c @@ -2255,7 +2255,7 @@ int enumerate_links(const char *file, char *name) /* Return the length of the root of a UNC path, i.e. the '//host/share' * component, or 0 if the path doesn't look like that. */ -int unc_root_len(const char *dir) +int FAST_FUNC unc_root_len(const char *dir) { const char *s = dir + 2; int len; @@ -2276,7 +2276,7 @@ int unc_root_len(const char *dir) /* Return the length of the root of a path, i.e. either the drive or * UNC '//host/share', or 0 if the path doesn't look like that. */ -int root_len(const char *path) +int FAST_FUNC root_len(const char *path) { if (path == NULL) return 0; @@ -2285,7 +2285,7 @@ int root_len(const char *path) return unc_root_len(path); } -const char *get_system_drive(void) +const char * FAST_FUNC get_system_drive(void) { static const char *drive = NULL; char sysdir[PATH_MAX]; @@ -2320,7 +2320,7 @@ int chdir_system_drive(void) * an allocated string containing the resolved path. Die on failure, * which is most likely because the file doesn't exist. */ -char *xabsolute_path(char *path) +char * FAST_FUNC xabsolute_path(char *path) { char *rpath; @@ -2332,7 +2332,7 @@ char *xabsolute_path(char *path) bb_perror_msg_and_die("can't open '%s'", path); } -char *get_drive_cwd(const char *path, char *buffer, int size) +char * FAST_FUNC get_drive_cwd(const char *path, char *buffer, int size) { char drive[3] = { *path, ':', '\0' }; DWORD ret; @@ -2343,7 +2343,7 @@ char *get_drive_cwd(const char *path, char *buffer, int size) return bs_to_slash(buffer); } -void fix_path_case(char *path) +void FAST_FUNC fix_path_case(char *path) { char resolved[PATH_MAX]; int len; @@ -2365,7 +2365,7 @@ void fix_path_case(char *path) } } -void make_sparse(int fd, off_t start, off_t end) +void FAST_FUNC make_sparse(int fd, off_t start, off_t end) { DWORD dwTemp; HANDLE fh; @@ -2410,7 +2410,7 @@ void *get_proc_addr(const char *dll, const char *function, return proc->pfunction; } -int unix_path(const char *path) +int FAST_FUNC unix_path(const char *path) { int i; char *p = xstrdup(path); @@ -2423,7 +2423,7 @@ int unix_path(const char *path) /* Return true if file is referenced using a path. This means a path * look-up isn't required. */ -int has_path(const char *file) +int FAST_FUNC has_path(const char *file) { return strchr(file, '/') || strchr(file, '\\') || has_dos_drive_prefix(file); @@ -2438,7 +2438,7 @@ int has_path(const char *file) * Paths of the form /dir/file or c:dir/file aren't relative by this * definition. */ -int is_relative_path(const char *path) +int FAST_FUNC is_relative_path(const char *path) { return !is_dir_sep(path[0]) && !has_dos_drive_prefix(path); } @@ -2451,7 +2451,7 @@ int is_relative_path(const char *path) * matches the file name from bb_busybox_exec_path (with appropriate * allowance for 'busybox*.exe'). */ -const char *applet_to_exe(const char *name) +const char * FAST_FUNC applet_to_exe(const char *name) { const char *exefile = bb_basename(bb_busybox_exec_path); const char *exesuff = is_prefixed_with_case(exefile, name); @@ -2469,7 +2469,7 @@ const char *applet_to_exe(const char *name) * call should use a NULL pointer for str, subsequent calls should * pass an allocated string which will be freed. */ -char *xappendword(const char *str, const char *word) +char * FAST_FUNC xappendword(const char *str, const char *word) { char *newstr = str ? xasprintf("%s %s", str, word) : xstrdup(word); free((void *)str); @@ -2509,7 +2509,7 @@ change_critical_error_dialogs(const char *newval) 0 : SEM_FAILCRITICALERRORS); } -char *exe_relative_path(const char *tail) +char * FAST_FUNC exe_relative_path(const char *tail) { char *exepath = xstrdup(bb_busybox_exec_path); char *relpath = concat_path_file(dirname(exepath), tail); diff --git a/win32/process.c b/win32/process.c index 57e410a73..097a1d71c 100644 --- a/win32/process.c +++ b/win32/process.c @@ -113,7 +113,7 @@ parse_interpreter(const char *cmd, interp_t *interp) * See https://docs.microsoft.com/en-us/cpp/cpp/main-function-command-line-args?view=vs-2019#parsing-c-command-line-arguments * (Parsing C++ Command-Line Arguments) */ -char * +char * FAST_FUNC quote_arg(const char *arg) { char *r = xmalloc(2 * strlen(arg) + 3); // max-esc, enclosing DQ, \0 @@ -150,7 +150,7 @@ quote_arg(const char *arg) return xrealloc(r, d - r); } -char * +char * FAST_FUNC find_first_executable(const char *name) { char *path = getenv("PATH"); diff --git a/win32/winansi.c b/win32/winansi.c index 2b450aff0..12892e697 100644 --- a/win32/winansi.c +++ b/win32/winansi.c @@ -83,7 +83,7 @@ static int is_wine(void) #define ENABLE_VIRTUAL_TERMINAL_INPUT 0x0200 #endif -int terminal_mode(int reset) +int FAST_FUNC terminal_mode(int reset) { static int mode = -1; -- cgit v1.2.3-55-g6feb