+static const char *err_max_size = "pb-event: message too large "
+ "(%zu byte max)\n";
+
+static ssize_t parse_event_args(int n, char * const * args,
+ char *buf, size_t max_len)
+{
+ ssize_t arg_len, total_len;
+ const char *arg;
+ int i;
+
+ total_len = 0;
+
+ for (i = 0; i < n; i++) {
+ arg = args[i];
+ arg_len = strlen(arg);
+
+ if (total_len + (size_t)i + 1 > max_len) {
+ fprintf(stderr, err_max_size, max_len);
+ return -1;
+ }
+
+ memcpy(buf + total_len, arg, arg_len);
+ total_len += arg_len;
+
+ buf[total_len] = '\0';
+ total_len++;
+ }
+
+ return total_len;
+
+}
+
+static ssize_t parse_event_file(FILE *filp, char *buf, size_t max_len)
+{
+ int len;
+
+ len = fread(buf, 1, max_len, filp);
+
+ if (!feof(filp)) {
+ fprintf(stderr, err_max_size, max_len);
+ return -1;
+ }
+
+ if (!len)
+ return -1;
+
+ return len;
+}
+
+int main(int argc, char *argv[])