#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