#include <stdio.h>

#include "rwprocs.h"

int main(int argc, char *argv[])
{
	int err;
	struct conn_info c;

	err = parseargs(argc, argv, &c);
	if (err) {
		DEBUG(D_FATAL, "Unable to parse connection information (errcode: %d)", err);
		exit(1);
	}

	printf("Connection data\n--------------------------\n");
	printf("Hostname: %s\nService: %s\n", c->hostname, c->service);
	switch(c->ct) {
		case CONNTYPE_FTP:
			printf("FTP user: %s\nFTP pass: %s\n", c->ctdata.data.username, c->ctdata->data.password);
			break;
		default:
			printf("Unknown protocol\n");
			break;
	}

	return 0;
}


int parseargs(int argc, char *argv[], struct conn_info *c) {

	/* If a value is NULL it means "default",
	 * so start with all values set to NULL.
	 */
	memset(c, '\0', sizeof(*c));

	if (argc < 2) { /* protocol needs to be specified */
		return -1;
	}

	/* we currently only know about the FTP protocol */
	if (strcmp("ftp", argv[1]) != 0) {
		return -2;
	}
	c->ct = CONNTYPE_FTP;

	swicth(argc) {
		default: /* additional parameters? ignore them... */
		case 6:
			switch(c->ct) {
				case CONNTYPE_FTP:
					if (alloc_ctdata(c->ct, &(c->ctdata))) {
						DEBUG(D_FATAL, "allow_ctdata failed");
						return -6;
					}
					c->ctdata->data.password = argv[5];
					break;
				default:
					return -4;
			}
		case 5:
			switch(c->ct) {
				case CONNTYPE_FTP:
					if (alloc_ctdata(c->ct, &(c->ctdata))) {
						DEBUG(D_FATAL, "allow_ctdata failed");
						return -5;
					}
					c->ctdata->data.username = argv[4];
					break;
				default:
					return -3;
			}
		case 4:
			c->service = argv[3];
		case 3:
			c->hostname = argv[2];
		case 2:
			break;
	}

	return 0;
}

