Changeset 3536 for trunk/src/grep
- Timestamp:
- Dec 21, 2021, 12:32:59 AM (4 years ago)
- Location:
- trunk/src/grep
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/grep/Makefile.kmk
r3532 r3536 144 144 lib/strerror.c \ 145 145 \ 146 ../lib/maybe_con_fwrite.c \ 147 ../lib/is_console.c \ 146 148 ../lib/nt/ntstat.c \ 147 149 ../lib/nt/ntdir.c \ -
trunk/src/grep/config.win.h
r3532 r3536 2587 2587 /* Override initialize_main to do wildcard expansion. */ 2588 2588 #define initialize_main w32_initialize_main 2589 void w32_initialize_main(int *pcArgs, char ***ppapszArgs); 2589 2590 2590 2591 #endif /* !INCLUDED_CONFIG_WIN_H */ -
trunk/src/grep/src/grep.c
r3532 r3536 57 57 #include "xbinary-io.h" 58 58 #include "xstrtol.h" 59 60 #if defined(KMK_GREP) && defined(KBUILD_OS_WINDOWS) 61 # include "console.h" 62 #endif 59 63 60 64 enum { SEP_CHAR_SELECTED = ':' }; … … 439 443 static int stdout_errno; 440 444 445 #if defined(KMK_GREP) && defined(KBUILD_OS_WINDOWS) 446 # include <assert.h> 447 static void fwrite_errno (void const *, size_t, size_t); 448 #endif 449 441 450 static void 442 451 putchar_errno (int c) 443 452 { 453 #if defined(KMK_GREP) && defined(KBUILD_OS_WINDOWS) 454 char ch = (char)c; 455 fwrite_errno (&ch, 1, 1); 456 #else 444 457 if (putchar (c) < 0) 445 458 stdout_errno = errno; 459 #endif 446 460 } 447 461 … … 449 463 fputs_errno (char const *s) 450 464 { 465 #if defined(KMK_GREP) && defined(KBUILD_OS_WINDOWS) 466 fwrite_errno (s, 1, strlen (s)); 467 #else 451 468 if (fputs (s, stdout) < 0) 452 469 stdout_errno = errno; 470 #endif 453 471 } 454 472 … … 458 476 va_list ap; 459 477 va_start (ap, format); 478 #if defined(KMK_GREP) && defined(KBUILD_OS_WINDOWS) 479 char szBuf[1024]; /* Only really used for a PRIuMAX number and maybe a newline. */ 480 int cch = vsnprintf (szBuf, sizeof (szBuf), format, ap); 481 assert (cch < sizeof(szBuf)); 482 fwrite_errno (szBuf, 1, cch); 483 #else 460 484 if (vfprintf (stdout, format, ap) < 0) 461 485 stdout_errno = errno; 486 #endif 462 487 va_end (ap); 463 488 } … … 466 491 fwrite_errno (void const *ptr, size_t size, size_t nmemb) 467 492 { 493 #if defined(KMK_GREP) && defined(KBUILD_OS_WINDOWS) 494 /* 495 * This trick reduces the runtime of 'grep -r GNU .' in the grep source dir 496 * from just above 11 seconds to just below 1.2 seconds. 497 * Note! s_is_console is for keeping output to file speedy. 498 */ 499 static int s_is_console = -1; 500 if (s_is_console != -1) 501 { /* likely*/ } 502 else 503 s_is_console = is_console (fileno (stdout)); 504 if ( s_is_console 505 ? maybe_con_fwrite (ptr, size, nmemb, stdout) != nmemb 506 : fwrite (ptr, size, nmemb, stdout) != nmemb) 507 #else 468 508 if (fwrite (ptr, size, nmemb, stdout) != nmemb) 509 #endif 469 510 stdout_errno = errno; 470 511 }
Note:
See TracChangeset
for help on using the changeset viewer.