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