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