DC+
Pavel Janoušek
janousek na fonet.cz
Pátek Říjen 1 11:22:36 CEST 2004
> -----Original Message-----
> From: Jan Klugl [mailto:jkluglNOSPAM na pikebo.cz]
> - jednak ti neustale jezdi po obrazovce mega informaci a
Vypni si logovani...:-)
> druhak hledani
> a nasledny pokus o transfer jsou trochu mene intuitivni ;)))
Ted ti nenapisu primo prikazy, ale co je sloziteho na tomto:
a) zalozim novy segment download (ziskam ID) nebo atachnu starsi (opet ziskam ID)
b) dam "segment search add" s tim co chci a pripad ziskane ID
c) sleduju, jak se to pekne hromadi na disku (zpravidla rychlost omezena moznostmi disku:->)
Dokonce jsem si napsal vlastniho parsera, ktery velmi hrube prida dalsi zdroj do segment search - to z toho duvodu, abych mohl pouzit i nalezene zdroje z MoGLO apod. - staci to prekopirovat rovnou do dctc konzoly..
Nedelam si zadne naroky, v necem rozumnejsim (perl, awk apod. - cimz nevladnu a ucit se nebudu) to bude kratsi, ale treba se bude hodit (neni to ocesane, silne hrube, ale funkcni - kdyz ne, mas coredump a vis, ze jsi hnup a neumis to pouzit:-]) - pozor ale na MoGLO apod. - kazda verze mela trochu jiny vystup...
#include <stdio.h>
char *
rsrch(char *buf, char *poz, char znak)
{
while(poz >= buf)
if(*poz == znak)
return poz;
else
poz--;
return NULL;
}
char *
srch(char *buf, char *poz, char znak)
{
while(*poz != '\0')
if(*poz == znak)
return poz;
else
poz++;
return NULL;
}
#define POZICE( b, p ) (int) ( p - b )
#define PTR( b, p ) (char *) (&b[p])
void
main(int argc, char **argv)
{
char buf [1024], orig [1024];
fgets(buf, sizeof(buf), stdin);
if (buf[strlen(buf - 2)] == '\n')
buf[strlen(buf - 2)] = '\0';
strcpy(orig, buf);
char *vel = srch(buf, buf, '\xA0');
if(!vel)
{
printf("Error on input 1!\n");
return;
}
char *poz = rsrch(buf, vel, ' ');
if(!poz)
{
printf("Error on input 2!\n");
return;
}
buf[POZICE(buf,poz)] = '\0';
char name[1024];
strcpy(name, buf);
// printf("Jmeno: %s\n", name);
buf[POZICE(buf,poz)] = orig[POZICE(buf,poz)];
char *b = srch(buf, poz + 1, ' ') + 1;
char *e = srch(buf, b, '/');
poz = rsrch(buf, e, ' ');
buf[POZICE(buf, poz)] = '\0';
char dir[1024];
strcpy(dir, b);
// printf("Adresar: %s\n", dir);
buf[POZICE(buf, poz)] = orig[POZICE(buf, poz)];
b = srch(buf, e, ' ') + 1;
e = srch(buf, b, ' ');
buf[POZICE(buf, e)] = '\0';
char nick [1024];
strcpy(nick, b);
// printf("Nick: %s\n", nick);
buf[POZICE(buf, e)] = orig[POZICE(buf, e)];
char size [128];
long _size = atoi((e = rsrch(buf, &buf[strlen(buf) - 2], ' ')) + 1);
sprintf(size, "%ld", _size);
// printf("Velikost: %s\n", size);
buf[POZICE(buf, e)] = '\0';
char hub [1024];
strcpy(hub, rsrch(buf, e - 1, ' ') + 1);
// printf("Hub: %s\n", hub);
char par[1024] = "";
if(argc > 1)
strcpy(par, argv[1]);
printf("/GOTO %s\n", hub);
printf("/DL *%s**%s%s*\n", nick, dir, name);
printf("/GDLADD %s|%s|%s%s|%s\n", par, nick, dir, name, size);
}
-------------------------------------------------------------------
Ing. Pavel Janousek (PaJaSoft) FoNet, spol. s r. o.
Technicka podpora, Intranet/Internet Sokolova 67, 619 00 Brno
E-mail: mailto:Janousek na FoNet.Cz Tel.: +420 5 4324 4749
WWW: http://WWW.FoNet.Cz/ E-mail: mailto:Info na FoNet.Cz
-------------------------------------------------------------------
Další informace o konferenci Linux