Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
Ports:DebianBased:Tools
deb2suse
deb2suse_filedups.c
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File deb2suse_filedups.c of Package deb2suse
#include <stdio.h> #include <stdlib.h> #include <zio.h> #include <string.h> static int cmpstringp (const void *p1, const void *p2) { return strcmp (*(char * const *)p1, *(char * const *)p2); } int main(int argc, char **argv) { FILE *contents = fzopen (argv[1], "r"); FILE *files = fopen (argv[2], "r"); size_t tmp; char *content_l = NULL; /* read files list */ int nrfiles = 0; int files_a_room = 256; char **files_a = malloc (sizeof (char *) * files_a_room); do { if (getline (&files_a[nrfiles], &tmp, files) == -1) break; files_a[nrfiles][strlen(files_a[nrfiles])-1] = ' '; nrfiles++; if (nrfiles > files_a_room) { files_a_room *= 2; files_a = realloc (files_a, sizeof (char *) * files_a_room); } } while (1); /* sort it */ qsort (files_a, nrfiles, sizeof (char *), cmpstringp); /* now read contents and print out all lines that start with a known file. */ while (nrfiles > 0 && getline (&content_l, &tmp, contents) != -1) { int res; do { res = strncmp (content_l, *files_a, strlen (*files_a)); if (res == 0) fprintf (stdout, "%s", content_l); else if (res < 0) break; files_a++; --nrfiles; } while (nrfiles > 0 && res > 0); } return 0; }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor