diff options
Diffstat (limited to 'sebhbsd/freebsd/contrib/ntp/ntpd/rc_cmdlength.c')
-rw-r--r-- | sebhbsd/freebsd/contrib/ntp/ntpd/rc_cmdlength.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/sebhbsd/freebsd/contrib/ntp/ntpd/rc_cmdlength.c b/sebhbsd/freebsd/contrib/ntp/ntpd/rc_cmdlength.c new file mode 100644 index 0000000..8e6ca69 --- /dev/null +++ b/sebhbsd/freebsd/contrib/ntp/ntpd/rc_cmdlength.c @@ -0,0 +1,40 @@ +#include <machine/rtems-bsd-user-space.h> + +#include <config.h> +#include <rc_cmdlength.h> + +#if HAVE_UNISTD_H +# include <unistd.h> +#endif + +// XXX: Move to header. +size_t remoteconfig_cmdlength( const char *, const char *); + +/* Bug 2853 */ +/* evaluate the length of the command sequence. This breaks at the first + * char that is not >= SPACE and <= 127 after trimming from the right. + */ +size_t +remoteconfig_cmdlength( + const char *src_buf, + const char *src_end + ) +{ + const char *scan; + unsigned char ch; + + /* trim whitespace & garbage from the right */ + while (src_end != src_buf) { + ch = src_end[-1]; + if (ch > ' ' && ch < 128) + break; + --src_end; + } + /* now do a forward scan */ + for (scan = src_buf; scan != src_end; ++scan) { + ch = scan[0]; + if ((ch < ' ' || ch >= 128) && ch != '\t') + break; + } + return (size_t)(scan - src_buf); +} |