1 #include <config.h> 2 #include <rc_cmdlength.h> 3 4 #if HAVE_UNISTD_H 5 # include <unistd.h> 6 #endif 7 8 // XXX: Move to header. 9 size_t remoteconfig_cmdlength( const char *, const char *); 10 11 /* Bug 2853 */ 12 /* evaluate the length of the command sequence. This breaks at the first 13 * char that is not >= SPACE and <= 127 after trimming from the right. 14 */ 15 size_t 16 remoteconfig_cmdlength( 17 const char *src_buf, 18 const char *src_end 19 ) 20 { 21 const char *scan; 22 unsigned char ch; 23 24 /* trim whitespace & garbage from the right */ 25 while (src_end != src_buf) { 26 ch = src_end[-1]; 27 if (ch > ' ' && ch < 128) 28 break; 29 --src_end; 30 } 31 /* now do a forward scan */ 32 for (scan = src_buf; scan != src_end; ++scan) { 33 ch = scan[0]; 34 if ((ch < ' ' || ch >= 128) && ch != '\t') 35 break; 36 } 37 return (size_t)(scan - src_buf); 38 } 39