mirror of /home/gitosis/repositories/libowfat.git
Mirror of :pserver:cvs@cvs.fefe.de:/cvs libowfat
https://www.fefe.de/libowfat/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
328 lines
7.5 KiB
328 lines
7.5 KiB
#include "fmt.h" |
|
#include "scan.h" |
|
#include "str.h" |
|
#include "uint16.h" |
|
#include "uint32.h" |
|
#include "stralloc.h" |
|
#include "socket.h" |
|
#include "buffer.h" |
|
#include "ip4.h" |
|
#include "ip6.h" |
|
#include "mmap.h" |
|
#include "open.h" |
|
#include "byte.h" |
|
#include "textcode.h" |
|
#include "dns.h" |
|
#include "case.h" |
|
#include <stdio.h> |
|
#include <unistd.h> |
|
#include <errno.h> |
|
#include <string.h> |
|
#include <assert.h> |
|
#include "errmsg.h" |
|
#include "iob.h" |
|
|
|
#define rdtscl(low) \ |
|
__asm__ __volatile__ ("rdtsc" : "=a" (low) : : "edx") |
|
|
|
int64 writecb(int64 fd,const void* buf,uint64 n) { |
|
#if 0 |
|
int r; |
|
int todo=n>=65536?65536:n; |
|
r=write(fd,buf,todo); |
|
if (r==-1 && r!=EAGAIN) r=-3; |
|
return r; |
|
#endif |
|
return -1; |
|
} |
|
|
|
int main(int argc,char* argv[]) { |
|
#if 0 |
|
io_batch* b=iob_new(1234); |
|
int64 fd=open("t.c",0); |
|
iob_addbuf(b,"fnord",5); |
|
iob_addfile_close(b,fd,0,7365); |
|
iob_write(1,b,writecb); |
|
#endif |
|
#if 0 |
|
char dest[1024]; |
|
unsigned long len; |
|
scan_urlencoded2("libstdc++.tar.gz",dest,&len); |
|
buffer_putmflush(buffer_1,dest,"\n"); |
|
#endif |
|
#if 0 |
|
static stralloc sa; |
|
stralloc_copym(&sa,"foo ","bar ","baz.\n"); |
|
write(1,sa.s,sa.len); |
|
#endif |
|
#if 0 |
|
buffer_putmflush(buffer_1,"foo ","bar ","baz.\n"); |
|
#endif |
|
#if 0 |
|
char* c="fnord"; |
|
int fd=open_read(c); |
|
errmsg_iam(argv[0]); |
|
carp("could not open file `",c,"'"); |
|
diesys(23,"could not open file `",c,"'"); |
|
#endif |
|
#if 0 |
|
errmsg_warn("could not open file `",c,"'",0); |
|
errmsg_warnsys("could not open file `",c,"'",0); |
|
#endif |
|
#if 0 |
|
char buf[100]="/usr/bin/sh"; |
|
int len=str_len(buf); |
|
assert(byte_rchr(buf,len,'/')==8); |
|
assert(byte_rchr(buf,len,'@')==len); |
|
assert(byte_rchr(buf,len,'h')==len-1); |
|
printf("%d\n",byte_rchr("x",1,'x')); |
|
#endif |
|
#if 0 |
|
char buf[IP6_FMT+100]; |
|
int i; |
|
char ip[16]; |
|
uint32 scope_id; |
|
char* s="fec0::1:220:e0ff:fe69:ad92%eth0/64"; |
|
char blubip[16]="\0\0\0\0\0\0\0\0\0\0\xff\xff\x7f\0\0\001"; |
|
i=scan_ip6if(s,ip,&scope_id); |
|
assert(s[i]=='/'); |
|
buffer_put(buffer_1,buf,fmt_ip6if(buf,ip,scope_id)); |
|
buffer_putnlflush(buffer_1); |
|
buffer_put(buffer_1,buf,fmt_ip6ifc(buf,blubip,scope_id)); |
|
buffer_putnlflush(buffer_1); |
|
scan_ip6("2001:7d0:0:f015:0:0:0:1",ip); |
|
buffer_put(buffer_1,buf,fmt_ip6(buf,ip)); |
|
buffer_putnlflush(buffer_1); |
|
#endif |
|
#if 0 |
|
char buf[100]; |
|
int i; |
|
printf("%d\n",i=fmt_pad(buf,"fnord",5,7,10)); |
|
buf[i]=0; |
|
puts(buf); |
|
#endif |
|
#if 0 |
|
char ip[16]; |
|
char buf[32]; |
|
printf("%d (expect 2)\n",scan_ip6("::",ip)); |
|
printf("%d (expect 3)\n",scan_ip6("::1",ip)); |
|
printf("%d (expect 16)\n",scan_ip6("fec0:0:0:ffff::1/0",ip)); |
|
printf("%.*s\n",fmt_ip6(buf,ip),buf); |
|
#endif |
|
#if 0 |
|
static stralloc s,t; |
|
stralloc_copys(&s,"fnord"); |
|
stralloc_copys(&t,"abc"); printf("%d\n",stralloc_diff(&s,&t)); |
|
stralloc_copys(&t,"fnor"); printf("%d\n",stralloc_diff(&s,&t)); |
|
stralloc_copys(&t,"fnord"); printf("%d\n",stralloc_diff(&s,&t)); |
|
stralloc_copys(&t,"fnordh"); printf("%d\n",stralloc_diff(&s,&t)); |
|
stralloc_copys(&t,"hausen"); printf("%d\n",stralloc_diff(&s,&t)); |
|
#endif |
|
#if 0 |
|
static stralloc s; |
|
stralloc_copys(&s,"fnord"); |
|
printf("%d\n",stralloc_diffs(&s,"abc")); |
|
printf("%d\n",stralloc_diffs(&s,"fnor")); |
|
printf("%d\n",stralloc_diffs(&s,"fnord")); |
|
printf("%d\n",stralloc_diffs(&s,"fnordh")); |
|
printf("%d\n",stralloc_diffs(&s,"hausen")); |
|
#endif |
|
#if 0 |
|
printf("%d\n",case_starts("fnordhausen","FnOrD")); |
|
printf("%d\n",case_starts("fnordhausen","blah")); |
|
#endif |
|
#if 0 |
|
char buf[]="FnOrD"; |
|
case_lowers(buf); |
|
puts(buf); |
|
#endif |
|
#if 0 |
|
char buf[100]="foo bar baz"; |
|
printf("%d (expect 7)\n",byte_rchr(buf,11,' ')); |
|
#endif |
|
#if 0 |
|
unsigned long size; |
|
char* buf=mmap_read(argv[1],&size); |
|
if (buf) { |
|
unsigned int x=fmt_yenc(0,buf,size); |
|
unsigned int y; |
|
char* tmp=malloc(x+1); |
|
y=fmt_yenc(tmp,buf,size); |
|
write(1,tmp,x); |
|
} |
|
#endif |
|
#if 0 |
|
char buf[100]; |
|
char buf2[100]; |
|
unsigned int len,len2; |
|
buf[fmt_yenc(buf,"http://localhost/~fefe",22)]=0; |
|
buffer_puts(buffer_1,buf); |
|
buffer_putsflush(buffer_1,"\n"); |
|
if ((buf[len2=scan_yenc(buf,buf2,&len)])!='\n') { |
|
buffer_putsflush(buffer_2,"parse error!\n"); |
|
return 1; |
|
} |
|
buffer_put(buffer_1,buf2,len2); |
|
buffer_putsflush(buffer_1,"\n"); |
|
return 0; |
|
#endif |
|
#if 0 |
|
char buf[100]; |
|
char buf2[100]; |
|
unsigned int len,len2; |
|
buf[fmt_base64(buf,"foo:bar",7)]=0; |
|
buffer_puts(buffer_1,buf); |
|
buffer_putsflush(buffer_1,"\n"); |
|
if ((buf[len2=scan_base64(buf,buf2,&len)])!=0) { |
|
buffer_putsflush(buffer_2,"parse error!\n"); |
|
return 1; |
|
} |
|
buffer_put(buffer_1,buf2,len2); |
|
buffer_putsflush(buffer_1,"\n"); |
|
return 0; |
|
#endif |
|
#if 0 |
|
unsigned long size; |
|
char* buf=mmap_read(argv[1],&size); |
|
if (buf) { |
|
unsigned int x=fmt_uuencoded(0,buf,size); |
|
unsigned int y; |
|
char* tmp=malloc(x+1); |
|
y=fmt_uuencoded(tmp,buf,size); |
|
write(1,tmp,x); |
|
} |
|
#endif |
|
#if 0 |
|
char buf[]="00000000000000000000000000000001"; |
|
char ip[16]; |
|
if (scan_ip6_flat(buf,ip) != str_len(buf)) |
|
buffer_putsflush(buffer_2,"parse error!\n"); |
|
#endif |
|
#if 0 |
|
int fd=open_read("t.c"); |
|
buffer b; |
|
char buf[1024]; |
|
char line[20]; |
|
int i; |
|
buffer_init(&b,read,fd,buf,1024); |
|
i=buffer_getline(&b,line,19); |
|
buffer_puts(buffer_1,"getline returned "); |
|
buffer_putulong(buffer_1,i); |
|
buffer_puts(buffer_1,"\n"); |
|
buffer_puts(buffer_1,line); |
|
buffer_flush(buffer_1); |
|
#endif |
|
#if 0 |
|
buffer_putulong(buffer_1,23); |
|
// buffer_putspace(buffer_1); |
|
buffer_putsflush(buffer_1,"\n"); |
|
// buffer_flush(buffer_1); |
|
#endif |
|
#if 0 |
|
long a,b,c; |
|
char buf[4096]; |
|
char buf2[4096]; |
|
memcpy(buf,buf2,4096); |
|
byte_copy(buf,4096,buf2); |
|
rdtscl(a); |
|
memcpy(buf,buf2,4096); |
|
rdtscl(b); |
|
byte_copy(buf,4096,buf2); |
|
rdtscl(c); |
|
printf("memcpy: %d - byte_copy: %d\n",b-a,c-b); |
|
#endif |
|
#if 0 |
|
char ip[16]; |
|
int i; |
|
if ((i=scan_ip6(argv[1],ip))) { |
|
char buf[128]; |
|
buf[fmt_ip6(buf,ip)]=0; |
|
puts(buf); |
|
} |
|
#endif |
|
#if 0 |
|
char buf[100]; |
|
strcpy(buf,"foobarbaz"); |
|
buf[fmt_fill(buf,3,5,100)]=0; |
|
printf("\"%s\"\n",buf); |
|
#endif |
|
#if 0 |
|
unsigned long len; |
|
char *c=mmap_read("/etc/passwd",&len); |
|
printf("got map %p of len %lu\n",c,len); |
|
#endif |
|
#if 0 |
|
char c; |
|
printf("%d\n",buffer_getc(buffer_0,&c)); |
|
printf("%c\n",c); |
|
#endif |
|
#if 0 |
|
char buf[100]="01234567890123456789012345678901234567890123456789"; |
|
long a,b,c; |
|
#endif |
|
#if 0 |
|
buf[ip4_fmt(buf,ip4loopback)]=0; |
|
buffer_puts(buffer_1small,buf); |
|
buffer_flush(buffer_1small); |
|
#endif |
|
|
|
#if 0 |
|
buf[0]=0; |
|
buf[fmt_8long(buf,0)]=0; |
|
puts(buf); |
|
rdtscl(a); |
|
c=str_len(buf); |
|
rdtscl(b); |
|
/*byte_zero_djb(buf,j); */ |
|
// printf("\n%lu %d\n",b-a,c); |
|
#endif |
|
#if 0 |
|
buffer_puts(buffer_1small,"hello, world\n"); |
|
buffer_flush(buffer_1small); |
|
#endif |
|
#if 0 |
|
int s=socket_tcp4(); |
|
char ip[4]={127,0,0,1}; |
|
int t=socket_connect4(s,ip,80); |
|
#endif |
|
#if 0 |
|
char buf[100]="foo bar baz fnord "; |
|
char buf2[100]="foo braz fnord"; |
|
long a,b,c; |
|
long i=0,j=0,k=0; |
|
double d; |
|
uint32 l,m,n; |
|
stralloc sa={0}; |
|
stralloc_copys(&sa,"fnord"); |
|
stralloc_catlong0(&sa,-23,5); |
|
stralloc_append(&sa,"\n"); |
|
printf("%d %d\n",str_equal("fnord","fnord1"),str_equal("fnord1","fnord")); |
|
write(1,sa.s,sa.len); |
|
printf("%d %d\n",stralloc_starts(&sa,"fnord"),stralloc_starts(&sa,"fnord\na")); |
|
|
|
l=0xdeadbeef; |
|
uint32_pack_big((char*)&m,l); |
|
uint32_unpack_big((char*)&m,&n); |
|
printf("%x %x %x\n",l,m,n); |
|
|
|
rdtscl(a); |
|
/* i=scan_double("3.1415",&d); */ |
|
rdtscl(b); |
|
/*byte_zero_djb(buf,j); */ |
|
rdtscl(c); |
|
printf("%lu %lu\n",b-a,c-b); |
|
#endif |
|
#if 1 |
|
unsigned long size; |
|
char* buf=mmap_read(argv[1],&size); |
|
if (buf) { |
|
unsigned int x=fmt_urlencoded2(0,buf,size,"x"); |
|
unsigned int y; |
|
char* tmp=malloc(x+1); |
|
y=fmt_urlencoded2(tmp,buf,size,"x"); |
|
write(1,tmp,x); |
|
} |
|
#endif |
|
return 0; |
|
} |
|
|
|
|