Changeset 3536
- Timestamp:
 - Dec 21, 2021, 12:32:59 AM (4 years ago)
 - Location:
 - trunk/src/grep
 - Files:
 - 
      
- 3 edited
 
- 
          
  Makefile.kmk (modified) (1 diff)
 - 
          
  config.win.h (modified) (1 diff)
 - 
          
  src/grep.c (modified) (5 diffs)
 
 
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.
  