Reads a field from a debian control (status or available) file, handles multi-line...
authorGlenn L McGrath <bug1@ihug.co.nz>
Sun, 15 Apr 2001 12:38:12 +0000 (12:38 -0000)
committerGlenn L McGrath <bug1@ihug.co.nz>
Sun, 15 Apr 2001 12:38:12 +0000 (12:38 -0000)
libbb/read_package_field.c [new file with mode: 0644]

diff --git a/libbb/read_package_field.c b/libbb/read_package_field.c
new file mode 100644 (file)
index 0000000..4ba0bc6
--- /dev/null
@@ -0,0 +1,31 @@
+//#include <stdio.h>
+#include <string.h>
+#include "libbb.h"
+
+/*
+ * Returns a [multi-line] package field
+ */
+extern char *read_package_field(const char *package_buffer)
+{
+       char *field = NULL;
+       int field_length = 0;   
+       int buffer_length = 0;
+
+       buffer_length = strlen(package_buffer);
+       field = xcalloc(1, buffer_length + 1);
+
+       while ((field = strchr(&package_buffer[field_length], '\n')) != NULL) {
+               field_length = buffer_length - strlen(field);
+               if (package_buffer[field_length + 1] != ' ') {
+                       break;
+               } else {
+                       field_length++;
+               }               
+       }
+       if (field_length == 0) {
+               return(NULL);
+       } else {
+               return(xstrndup(package_buffer, field_length));
+       }
+}
+