mirror of
https://github.com/sheumann/hush.git
synced 2024-12-26 10:32:02 +00:00
Reads a field from a debian control (status or available) file, handles multi-line fields.
This commit is contained in:
parent
65708e4cd1
commit
5faef74bae
31
libbb/read_package_field.c
Normal file
31
libbb/read_package_field.c
Normal file
@ -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));
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user