summaryrefslogtreecommitdiffstats
path: root/sebhbsd/freebsd/contrib/ntp/ntpd/rc_cmdlength.c
diff options
context:
space:
mode:
Diffstat (limited to 'sebhbsd/freebsd/contrib/ntp/ntpd/rc_cmdlength.c')
-rw-r--r--sebhbsd/freebsd/contrib/ntp/ntpd/rc_cmdlength.c40
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);
+}