aboutsummaryrefslogblamecommitdiffstats
path: root/src/bin/cuturl.c
blob: 40b77667626a08b16c65607bb88a58f7f5f287af (plain) (tree)
1
2
3
4
5
6
7
8
                  

                   
                   
 

                                                          
                                                  








                                                                     

                               












                                                                                                         
              







                      
                
                
                      
             
               
              

                    
               








                                                                                     
   

         
  
           







                 


                               


                                         

                    


             









                                          


       
                       
                              
                                                                 






                  


                                                                             
                   
                       







                                                             
 


                               










                                              
   





                                  
   
 






                                         
 


                             
             


               
   
 






                              
   
 




                                  
    


              
                                                       

                                         





                                           



                             





                                           
     

    
 
                                 




                                    
   
 






                                                                           




                     
                         
 


                                                                                        


                                                                    
                                                              


                                                                     


                                                                                
 










                                                           












                                             
          

               

   

          
#include <netdb.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

/*
 schemes are case sensitive but cononicals are lower case.
 domain is case insensitive. return it lowercased?
 port is optional and in decimal
 path
 scheme://username:password@domain:port/path?query_string#fragment_id
 mailto:username@domain

 optional stuff:
 scheme, username, password, port, path, query_string, fragment_id
*/

#define AorB(a,b) ((a)?(a):(b))

#define F_SCHEME 1<<0
#define F_USERNAME 1<<1
#define F_PASSWORD 1<<2
#define F_DOMAIN 1<<3
#define F_PORT 1<<4
#define F_PATH 1<<5
#define F_QUERY_STRING 1<<6
#define F_FRAGMENT_ID 1<<7

char *long_opts[]={"scheme","username","password","domain","port","path","query_string","fragment_id",0};
char *short_opts[]={"s","u","k","d","P","p","q","f"};

int main(int argc,char *argv[]) {
 char *line=0;
 char *scheme=0;
 char *username=0;
 char *password=0;
 char *domain=0;
 char *port=0;
 char *path=0;
 char *query_string=0;
 char *fragment_id=0;
 char sport[10];
 char args[256];
 struct servent *serv;
 int i,j,c=0;
 int size=1024;
 char fixme=0;
 char using_stdin=1;
 char malloced=0;
 if(argc > 1) {
  if(!strcmp(argv[1],"--help") || !strcmp(argv[1],"-h")) {
   printf("usage: echo urls | cuturl [options]\n");
   printf("usage: cuturl [options] url [options] [url]\n\n");
   printf("options: \n");
   for(i=0;long_opts[i];i++) {
    printf("        -%s|--%s\n",short_opts[i],long_opts[i]);
   }
   printf("To set default values use environment variables like: CUTURL_[OPTION]\n");
   return 2;
  }
  argc--;
  argv++;
 }
 while(1) {
  scheme=0;
  username=0;
  password=0;
  domain