Commit 389d4aac 389d4aacf9b3e06736d8632ee4575b5e3a707e63 by Sam Roberts

Added example of URL parsing, and test for parsing.

1 parent 7ce849a0
.gdbinit
bad-dates.out
addr
Addrs.test
Urls.test
mbox-dates
mbox-dates.out
mbox-explode
url-parse
_*
......
# Makefile
CFLAGS = -g -I../include
CFLAGS = -g -I../include -Wall
LDFLAGS = -g -static
LIBS = ../mailbox/.libs/libmailbox.a ../lib/libmailutils.a
LDLIBS = ../mailbox/.libs/libmailbox.a ../lib/libmailutils.a -lsocket
default: addr mbox-explode mbox-dates
EXES = addr mbox-explode mbox-dates mbox-auth url-parse
# showmail
$(EXES): $(LDLIBS)
showmail: showmail.c $(LIBS)
$(CC) $(CFLAGS) -o $@ $< $(LIBS)
# example of saving MIME parts to a file
mbox-explode: mbox-explode.c $(LIBS)
$(CC) $(CFLAGS) -o $@ $< $(LIBS)
default: $(EXES)
# example of parsing the date fields, prints all the incorrectly
# formatted dates in a mailbox.
mbox-dates: mbox-dates.c $(LIBS)
$(CC) $(CFLAGS) -o $@ $< $(LIBS)
bad-dates: mbox-dates
for m in ~/Mail/*; do ./mbox-dates $$m; done | tee bad-dates.out
# addr example and test
test: addr
addr.test: addr
./addr < Addrs > Addrs.test
diff -u Addrs.good Addrs.test
@echo "---- There should be no differences! ----"
diff -u Addrs.good Addrs.test
# url example and test
addr: addr.c $(LIBS)
$(CC) $(CFLAGS) -o $@ $< $(LIBS)
url.test: url-parse
./url-parse < Urls > Urls.test
@echo "---- There should be no differences! ----"
diff -u Urls.good Urls.test
# clean and empty
......@@ -41,5 +36,5 @@ clean:
rm -f *.o
empty: clean
rm -f addr showmail mbox-explode mbox-dates
rm -f $(EXES)
......
scheme://%75%73%65%72:%70%61%73%73@%68%6f%73%74
ftp://user:pass@host//a/path
ftp://:pass@host//a/path
ftp://user:@host//a/path
ftp://user:pass@//a/path
ftp://user:@//a/path
ftp://:@host//a/path
ftp://:pass@//a/path
ftp://:@//a/path
ftp://://a/path
ftp://@//a/path
ftp:////a/path
ftp://user:pass@host/a/path
ftp://:pass@host/a/path
ftp://user:@host/a/path
ftp://user:pass@/a/path
ftp://user:@/a/path
ftp://:@host/a/path
ftp://:pass@/a/path
ftp://:@/a/path
ftp://:/a/path
ftp://@/a/path
ftp:///a/path
pop://pop.example.net
pop://user@pop.example.net
pop://user:passwd@pop.example.net
pop://user;auth=*@pop.example.net
pop://pop.example.net:111
pop://user@pop.example.net:111
pop://user:passwd@pop.example.net:111
pop://user;auth=*@pop.example.net:111
imap://imap.example.net
imap://user@imap.example.net
imap://user:passwd@imap.example.net
imap://user;auth=*@imap.example.net
imap://imap.example.net:111
imap://user@imap.example.net:111
imap://user:passwd@imap.example.net:111
imap://user;auth=*@imap.example.net:111
imap://imap.example.net/mbox
imap://user@imap.example.net/mbox
imap://user:passwd@imap.example.net/mbox
imap://user;auth=*@imap.example.net/mbox
imap://imap.example.net:111/mbox
imap://user@imap.example.net:111/mbox
imap://user:passwd@imap.example.net:111/mbox
imap://user;auth=*@imap.example.net:111/mbox
imap://imap.example.net/mbox/user@host
imap://user@imap.example.net/mbox/user@host
imap://user:passwd@imap.example.net/mbox/user@host
imap://user;auth=*@imap.example.net/mbox/user@host
imap://imap.example.net:111/mbox/user@host
imap://user@imap.example.net:111/mbox/user@host
imap://user:passwd@imap.example.net:111/mbox/user@host
imap://user;auth=*@imap.example.net:111/mbox/user@host
ftp://ftp.example.org/mbox/user%40host
ftp://ftp.example.org:111/mbox/user%40host
#include <mailutils/url.h>
#include <stdio.h>
#include <string.h>
int
main ()
{
char str[1024];
char buffer[1024];
long port = 0;
int len = sizeof (buffer);
url_t u = NULL;
while (fgets (str, sizeof (str), stdin) != NULL)
{
int rc;
str[strlen (str) - 1] = '\0'; /* chop newline */
if(strspn(str, " \t") == strlen(str))
continue; /* skip empty lines */
if ((rc = url_create(&u, str)) != 0)
{
fprintf(stderr, "url_create %s ERROR: [%d] %s",
str, rc, strerror(rc));
exit (1);
}
if ((rc = url_parse (u)) != 0)
{
printf ("%s --> FAILED: [%d] %s\n",
str, rc, strerror(rc));
continue;
}
printf ("%s --> SUCCESS\n", str);
url_get_scheme (u, buffer, len, NULL);
printf (" scheme <%s>\n", buffer);
url_get_user (u, buffer, len, NULL);
printf (" user <%s>\n", buffer);
url_get_passwd (u, buffer, len, NULL);
printf (" passwd <%s>\n", buffer);
url_get_auth (u, buffer, len, NULL);
printf (" auth <%s>\n", buffer);
url_get_host (u, buffer, len, NULL);
printf (" host <%s>\n", buffer);
url_get_port (u, &port);
printf (" port %ld\n", port);
url_get_path (u, buffer, len, NULL);
printf (" path <%s>\n", buffer);
url_get_query (u, buffer, len, NULL);
printf (" query <%s>\n", buffer);
url_destroy (&u);
}
return 0;
}