parent
b938a069db
commit
0546ea048c
@ -0,0 +1,36 @@
|
||||
#include "socket.h"
|
||||
#include "buffer.h"
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
|
||||
main() {
|
||||
int s=socket_tcp4();
|
||||
char line[1024];
|
||||
char buf[4096];
|
||||
int l;
|
||||
int header=1;
|
||||
buffer filein;
|
||||
buffer_init(&filein,read,s,buf,sizeof buf);
|
||||
if (socket_connect4(s,"\x7f\x00\x00\x01",4000)) {
|
||||
perror("connect");
|
||||
return 1;
|
||||
}
|
||||
write(s,"vd\nq\n",5);
|
||||
for (;;) {
|
||||
line[0]=0;
|
||||
if ((l=buffer_getline(&filein,line,(sizeof line)-1))==0 && line[l]!='\n')
|
||||
break;
|
||||
else {
|
||||
line[l+1]=0;
|
||||
if (!header) {
|
||||
if (strcmp(line,"\e[7mMLdonkey command-line:\e[2;37;0m\n") &&
|
||||
strcmp(line,"\e[2;37;0m\e[7mMLdonkey command-line:\e[2;37;0m\n") &&
|
||||
strncmp(line,"> ",2))
|
||||
buffer_put(buffer_1,line,l+1);
|
||||
}
|
||||
if (!strcmp(line,"Use \e[31m?\e[2;37;0m for help\n")) header=0;
|
||||
if (!strcmp(line,"Use ? for help\n")) header=0;
|
||||
}
|
||||
}
|
||||
buffer_flush(buffer_1);
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
#include "fmt.h"
|
||||
#include "textcode.h"
|
||||
#include "str.h"
|
||||
#include "haveinline.h"
|
||||
|
||||
unsigned int fmt_html(char* dest,const char* src,unsigned int len) {
|
||||
register const unsigned char* s=(const unsigned char*) src;
|
||||
unsigned long written=0,i;
|
||||
const char* seq;
|
||||
for (i=0; i<len; ++i) {
|
||||
switch (s[i]) {
|
||||
case '&': seq="&"; goto doit;
|
||||
case '<': seq="<"; goto doit;
|
||||
case '>': seq=">"; goto doit;
|
||||
case '\n':
|
||||
seq="<br>";
|
||||
doit:
|
||||
written+=fmt_str(dest?dest+written:0,">");
|
||||
break;
|
||||
default: if (dest) dest[written]=s[i]; ++written; break;
|
||||
}
|
||||
}
|
||||
return written;
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
#include "fmt.h"
|
||||
#include "textcode.h"
|
||||
#include "haveinline.h"
|
||||
#include "case.h"
|
||||
|
||||
unsigned int scan_html(const char *src,char *dest,unsigned int *destlen) {
|
||||
register const unsigned char* s=(const unsigned char*) src;
|
||||
unsigned long written=0,i;
|
||||
for (i=0; s[i]; ++i) {
|
||||
if (s[i]=='&') {
|
||||
if (case_starts(s+i+1,"amp;")) {
|
||||
dest[written]='&';
|
||||
i+=4;
|
||||
} else if (case_starts(s+i+1,"lt;")) {
|
||||
dest[written]='<';
|
||||
i+=3;
|
||||
} else if (case_starts(s+i+1,"gt;")) {
|
||||
dest[written]='>';
|
||||
i+=3;
|
||||
}
|
||||
} else if (s[i]=='<') {
|
||||
if (case_starts(s+i+1,"br>")) {
|
||||
dest[written]='\n';
|
||||
i+=3;
|
||||
} else if (case_starts(s+i+1,"p>")) {
|
||||
dest[written]='\n'; ++written;
|
||||
dest[written]='\n';
|
||||
i+=3;
|
||||
}
|
||||
} else
|
||||
dest[written]=s[i];
|
||||
++written;
|
||||
}
|
||||
*destlen=written;
|
||||
return i;
|
||||
}
|
Loading…
Reference in New Issue