repo: uritools
action: blob
revision: 
path_from: urijoin.c
revision_from: refs/heads/master:
path_to: 
revision_to: 
git.thebackupbox.net
uritools
git clone git://git.thebackupbox.net/uritools

blob of:

uritools

/ urijoin.c

blob_plain of this file

refs/heads/master:/urijoin.c

 #define _XOPEN_SOURCE 500
 #include 
 #include 
 #include "uri.h"

 int main(int argc,char *argv[]) {
   struct uri *u=malloc(sizeof(struct uri));
   int i;
   char key[1024];//fuck if I know
   char *value;
   memset(u,0,sizeof(struct uri));
   char *parts[]={"scheme:","username:","password:","domain:","port:","path:","query_string:","fragment_id:"};
   while(fgets(key,sizeof(key),stdin)) {
     if(strchr(key,'\n')) *strchr(key,'\n')=0;
     if((value=strchr(key,' '))) {
       *value=0;
       value++;
 //      fprintf(stderr,"read: %s %s\n",key,value);
       for(i=0;i<8;i++) {
         if(!strcmp(key,parts[i])) {
           if(u->A[i]) free(u->A[i]);
           u->A[i]=strdup(value);
           break;
         }
       }
       if(i==8) {
         fprintf(stderr,"urijoin: unknown uri portion: '%s'\n",key);
         //return 1;//bail early instead of pretending it makes sense.
       }
     } else {
       fprintf(stderr,"urijoin: malformed line. missing a space: '%s'\n",key);
     }
   }
   printf("%s\n",linefromuri(u));
   return 0;
 }