- Timestamp:
- Jul 1, 2020 8:24:52 PM (5 years ago)
- Location:
- trunk/src
- Files:
-
- 2 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kmk/Makefile.am
r3259 r3394 63 63 ../lib/dos2unix.c \ 64 64 ../lib/maybe_con_fwrite.c \ 65 ../lib/version_compare.c \ 65 66 \ 66 67 kmkbuiltin.c \ -
trunk/src/kmk/Makefile.kmk
r3352 r3394 78 78 ifdef GCC_SANITIZERS 79 79 TEMPLATE_BIN-KMK_CFLAGS ?= $(TEMPLATE_BIN-THREADED_CFLAGS) 80 TEMPLATE_BIN-KMK_CFLAGS += -fsanitize=address -fsanitize=undefined -static-libubsan -D GCC_ADDRESS_SANITIZER 80 # TEMPLATE_BIN-KMK_CFLAGS += -fsanitize=address -fsanitize=undefined -static-libubsan -D GCC_ADDRESS_SANITIZER 81 TEMPLATE_BIN-KMK_CFLAGS += -fsanitize=address -fsanitize=undefined -D GCC_ADDRESS_SANITIZER 81 82 TEMPLATE_BIN-KMK_LDFLAGS ?= $(TEMPLATE_BIN-THREADED_LDFLAGS) 82 83 TEMPLATE_BIN-KMK_LDFLAGS += -fsanitize=address -fsanitize=undefined -
trunk/src/kmk/function.c
r3389 r3394 90 90 # include "kmkbuiltin/mscfakes.h" 91 91 # endif 92 # include "version_compare.h" 92 93 #endif 93 94 … … 1766 1767 } 1767 1768 1769 #ifdef KMK 1770 /* Compare strings *S1 and *S2. 1771 Return negative if the first is less, positive if it is greater, 1772 zero if they are equal. */ 1773 1774 static int 1775 version_compare_wrapper (const void *v1, const void *v2) 1776 { 1777 const char *s1 = *((char **)v1); 1778 const char *s2 = *((char **)v2); 1779 return version_compare (s1, s2); 1780 } 1781 #endif /* KMK */ 1768 1782 1769 1783 /* … … 1806 1820 1807 1821 /* Now sort the list of words. */ 1822 #ifdef KMK 1823 if (funcname[0] == 'v' || funcname[1] == 'v') 1824 qsort (words, wordi, sizeof (char *), version_compare_wrapper); 1825 else 1826 qsort (words, wordi, sizeof (char *), alpha_compare); 1827 #else 1808 1828 qsort (words, wordi, sizeof (char *), alpha_compare); 1829 #endif 1809 1830 1810 1831 /* Now write the sorted list, uniquified. */ 1811 1832 #ifdef CONFIG_WITH_RSORT 1812 if ( strcmp (funcname, "rsort"))1833 if (*funcname != 'r') 1813 1834 { 1814 1835 /* sort */ … … 6782 6803 6783 6804 static char *common_sortfiles (char *o, char **argv, unsigned int style, 6784 int ascending )6805 int ascending, int version) 6785 6806 { 6786 6807 struct nameseq *chain = helper_parse_file_list (argv[0], style, 0); … … 6840 6861 { 6841 6862 return common_sortfiles (o, argv, Q_IN_QUOTED | Q_RET_QUOTED | Q_SEP_SPACE, 6842 funcname[0] != 'r'); 6863 funcname[0] != 'r', 6864 funcname[0] == 'v' || funcname[1] == 'v'); 6843 6865 } 6844 6866 … … 6851 6873 { 6852 6874 unsigned int const style = helper_file_quoting_style (argv[0], Q_QDEFAULT); 6853 return common_sortfiles (o, &argv[1], style, funcname[1] != 'r'); 6875 return common_sortfiles (o, &argv[1], style, funcname[1] != 'r', 6876 funcname[1] == 'v' || funcname[2] == 'v'); 6854 6877 } 6855 6878 … … 6876 6899 { 6877 6900 PATH_VAR (outbuf); 6878 int doneany = 0;6879 6901 struct nameseq *chain = helper_parse_file_list (line, style, 0); 6880 6902 … … 7408 7430 #ifdef CONFIG_WITH_RSORT 7409 7431 FT_ENTRY ("rsort", 0, 1, 1, func_sort), 7432 # ifdef KMK 7433 FT_ENTRY ("rversort", 0, 1, 1, func_sort), 7434 # endif 7410 7435 #endif 7411 7436 FT_ENTRY ("shell", 0, 1, 1, func_shell), 7412 7437 FT_ENTRY ("sort", 0, 1, 1, func_sort), 7438 # ifdef KMK 7439 FT_ENTRY ("versort", 0, 1, 1, func_sort), 7440 # endif 7413 7441 FT_ENTRY ("strip", 0, 1, 1, func_strip), 7414 7442 #ifdef CONFIG_WITH_WHERE_FUNCTION … … 7570 7598 FT_ENTRY ("foreachfile", 3, 3, 0, func_foreachfile), 7571 7599 FT_ENTRY ("sortfiles", 0, 1, 1, func_sortfiles), 7600 FT_ENTRY ("versortfiles", 0, 1, 1, func_sortfiles), 7572 7601 # ifdef CONFIG_WITH_RSORT 7573 7602 FT_ENTRY ("rsortfiles", 0, 1, 1, func_sortfiles), 7603 FT_ENTRY ("rversortfiles", 0, 1, 1, func_sortfiles), 7574 7604 # endif 7575 7605 /* Function variants with preceding style argument and quoting by default. */ … … 7580 7610 FT_ENTRY ("qforeachfile", 1+3, 1+3, 0, func_q_foreachfile), 7581 7611 FT_ENTRY ("qsortfiles", 1+0, 1+1, 1, func_q_sortfiles), 7612 FT_ENTRY ("qversortfiles",1+0, 1+1, 1, func_q_sortfiles), 7582 7613 # ifdef CONFIG_WITH_RSORT 7583 7614 FT_ENTRY ("qrsortfiles", 1+0, 1+1, 1, func_q_sortfiles), 7615 FT_ENTRY ("qrversortfiles",1+0,1+1, 1, func_q_sortfiles), 7584 7616 # endif 7585 7617 FT_ENTRY ("qabspath", 1+0, 1+1, 1, func_q_abspath), -
trunk/src/kmk/variable.c
r3319 r3394 1606 1606 struct variable *envvar1; 1607 1607 struct variable *envvar2; 1608 # ifdef WINDOWS32 1609 OSVERSIONINFOEX oix; 1610 # else 1608 # ifndef WINDOWS32 1611 1609 struct utsname uts; 1612 1610 # endif … … 1677 1675 1678 1676 /* The host kernel version. */ 1679 #if defined(WINDOWS32) 1680 memset (&oix, '\0', sizeof (oix)); 1681 oix.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); 1682 if (!GetVersionEx ((LPOSVERSIONINFO)&oix)) 1683 { 1684 memset (&oix, '\0', sizeof (oix)); 1685 oix.dwOSVersionInfoSize = sizeof (OSVERSIONINFO); 1686 GetVersionEx ((LPOSVERSIONINFO)&oix); 1687 } 1688 if (oix.dwPlatformId == VER_PLATFORM_WIN32_NT) 1689 { 1690 ulMajor = oix.dwMajorVersion; 1691 ulMinor = oix.dwMinorVersion; 1692 ulPatch = oix.wServicePackMajor; 1693 ul4th = oix.wServicePackMinor; 1694 } 1695 else 1696 { 1697 ulMajor = oix.dwPlatformId == 1 ? 0 /*Win95/98/ME*/ 1698 : oix.dwPlatformId == 3 ? 1 /*WinCE*/ 1699 : 2; /*??*/ 1700 ulMinor = oix.dwMajorVersion; 1701 ulPatch = oix.dwMinorVersion; 1702 ul4th = oix.wServicePackMajor; 1703 } 1704 #else 1677 # if defined(WINDOWS32) 1678 { 1679 OSVERSIONINFOEXW oix; 1680 typedef NTSTATUS (WINAPI *pfnRtlGetVersion)(OSVERSIONINFOEXW *); 1681 *(FARPROC *)&pfnRtlGetVersion = GetProcAddress (GetModuleHandleW ("NTDLL.DLL"), 1682 "RtlGetVersion"); /* GetVersionEx lies */ 1683 memset (&oix, '\0', sizeof (oix)); 1684 oix.dwOSVersionInfoSize = sizeof (OSVERSIONINFOEX); 1685 if (!pfnRtlGetVersion || pfnRtlGetVersion (&oix) < 0) 1686 { 1687 memset (&oix, '\0', sizeof (oix)); 1688 oix.dwOSVersionInfoSize = sizeof (OSVERSIONINFOEX); 1689 if (!GetVersionExW((LPOSVERSIONINFO)&oix)) 1690 { 1691 memset (&oix, '\0', sizeof (oix)); 1692 oix.dwOSVersionInfoSize = sizeof (OSVERSIONINFO); 1693 GetVersionExW ((LPOSVERSIONINFO)&oix); 1694 } 1695 } 1696 if (oix.dwPlatformId == VER_PLATFORM_WIN32_NT) 1697 { 1698 ulMajor = oix.dwMajorVersion; 1699 ulMinor = oix.dwMinorVersion; 1700 ulPatch = oix.wServicePackMajor; 1701 ul4th = oix.wServicePackMinor; 1702 } 1703 else 1704 { 1705 ulMajor = oix.dwPlatformId == 1 ? 0 /*Win95/98/ME*/ 1706 : oix.dwPlatformId == 3 ? 1 /*WinCE*/ 1707 : 2; /*??*/ 1708 ulMinor = oix.dwMajorVersion; 1709 ulPatch = oix.dwMinorVersion; 1710 ul4th = oix.wServicePackMajor; 1711 } 1712 } 1713 # else 1705 1714 memset (&uts, 0, sizeof(uts)); 1706 1715 uname (&uts); … … 1716 1725 define_variable_cname ("KBUILD_HOST_UNAME_MACHINE", uts.machine, o_default, 0); 1717 1726 define_variable_cname ("KBUILD_HOST_UNAME_NODENAME", uts.nodename, o_default, 0); 1718 # endif1727 # endif 1719 1728 1720 1729 sprintf (buf, "%lu.%lu.%lu.%lu", ulMajor, ulMinor, ulPatch, ul4th); … … 1765 1774 && defined (KMK_HELPERS) 1766 1775 define_variable_cname ("KMK_FEATURES", 1767 "append-dash-n abspath includedep-queue install-hard-linking umask quote "1776 "append-dash-n abspath includedep-queue install-hard-linking umask quote versort" 1768 1777 " kBuild-define" 1769 1778 " rsort" … … 1796 1805 # else /* MSC can't deal with strings mixed with #if/#endif, thus the slow way. */ 1797 1806 # error "All features should be enabled by default!" 1798 strcpy (buf, "append-dash-n abspath includedep-queue install-hard-linking umask quote "1807 strcpy (buf, "append-dash-n abspath includedep-queue install-hard-linking umask quote versort" 1799 1808 " kBuild-define"); 1800 1809 # if defined (CONFIG_WITH_RSORT) -
trunk/src/kmk/variable.h
r3140 r3394 313 313 basic checks in variable_expand_string_2. */ 314 314 extern char func_char_map[256]; 315 # define MAX_FUNCTION_LENGTH 1 2315 # define MAX_FUNCTION_LENGTH 14 316 316 # define MIN_FUNCTION_LENGTH 2 317 317 K_INLINE const char *may_be_function_name (const char *name, const char *eos) -
trunk/src/lib/Makefile.kmk
r3380 r3394 43 43 is_console.c \ 44 44 dos2unix.c \ 45 kbuild_version.c 45 kbuild_version.c \ 46 version_compare.c 46 47 kUtil_SOURCES.win = \ 47 48 msc_buffered_printf.c \
Note:
See TracChangeset
for help on using the changeset viewer.