On 31.08.2010 12:59, lano wrote:

Zum Schluss, punkte 3 und 4, musste ich noch recht kämpfen, denn einen string zusammensetzen ist in c anscheint wieder was ganz anderes als in perl.
mit url = server + datei; funktioniert es jedenfalls nicht.
ich bewerkstellige das nun so:

char url[300];
strcpy(url, quotenpage);
strcat(url, "?user=");
strcat(url, user);
strcat(url, "&channel=");
strcat(url, channel);


Ja weil C keine Strings kennt. Wenn du + bei Pointern verwendest rechnest du Adressen zusammen. Warscheinlich kommt dabei keine brauchbare heraus :)

Du solltest den Speicher hier umbedingt ausrechnen und mit malloc reservieren oder aber überprüfen ob der Puffer groß genug ist um beide "Strings" aufzunehmen. Wenn die beiden Strings zusammen größer als 300 werden hast du sonst einen Buffer Overflow. strnFOO ist dafür besser geeignet, da z.B. strcpy einfach so lange in den Speicher schreibt bis ein Terminierungszeichen \0 kommt strncpy aber nur maximal so lange wie du angibst.
jetzt müssen nur noch einige feinheiten rein, da bin ich aber erstmal am überlegen wie es am cleversten wäre. die datei vom server holen und die url an den server senden mache ich mit ein und der selben funktion.

HTTP_downloadFile( quotenserver, 80, url, "/dev/null", 0, 1);


die Funktion macht im Moment allerdings nix anderes als wget mit den ensprechenden parametern aufzurufen. Interessant wäre es ob es zb. mit deiner Funktion Ressourcen schonender wäre.
(im gegensatz zum shell script frist das c progämmchen so gut wie nix)
Allerdings wollt ich
a) weder das rad ständig neu erfinden
b) sollte das programm so klein wie möglich sein, mir stehen nur 556kb flash zur verfügung, von denen ich möglichst so wenig wie möglich benutzen sollte.
im moment ist das programm ca 13 kb groß gestiped sinds nur noch 5,8kb :)



Libcurl ist zwar schon ein bisschen größer als alles selber zu schreiben aber dafür sollte es machen was du willst. Du kannst es statisch linken dann hast du es beim cross compiling einfacher. Was für eine Toolchain verwendest du für die Dreambox? Das mit dem wget ist sonst auch nicht so schlimm.

Gruß
Bernhard
--
----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org

Antwort per Email an