rarup
29.01.04, 14:22
Hallo !
Ich muß eine recht komplexe Software nach Linux portieren.
Dabei bin ich über ein dummes Problem mit sprintf gestolpert:
Der Code ist sowas wie :
void test(char *b)
{
char *a;
a = malloc(strlen(b)+1); //nachträglich einen Tippfehler korrigiert
sprintf(a, "%s", b);
}
Jetzt lassen wir b mal NULL sein.
Auf AIX, Linux und NT liefert strlen(b) == 0
Auf AIX und NT wird in a auch wirklich nur `\x0`reingeschrieben. Auf Linux dagegen wird da "(null)" (im Klartext) reingeschrieben.
Jetzt stehe ich ratlos vor meinem Suse 8.2 und frag mich was das soll und wie ich das Problem lösen kann ohne eine Wrapperfunktion für das Linux-sprintf zu schreiben. (wie gesagt: der Codzeilen gibt es viele - auch mit sprintf !)
(Ach ja .. der Code ist auch nicht wirklich so wie oben, sondern mit variablen Argumentenlisten, etc. ...)
Wenn man sich das Codebeispiel (welches auf HPUX, Sinix, Aix und NT läuft) oben ansieht ist auch unmittelbar klar, dass es eine schlechte Idee ist sprintf in a was reinschreiben zu lassen, wiels nämlich abstürzt .. aber was solls.
Ein Linux - Programmiererforum gibts hier leider nicht aber vielleicht kann mir trotzdem jemand meine Frage beantworten (bzw. mir einen Tipp zu einem guten Linux-Programmiererforum geben)
Danke, Rainer
Ich muß eine recht komplexe Software nach Linux portieren.
Dabei bin ich über ein dummes Problem mit sprintf gestolpert:
Der Code ist sowas wie :
void test(char *b)
{
char *a;
a = malloc(strlen(b)+1); //nachträglich einen Tippfehler korrigiert
sprintf(a, "%s", b);
}
Jetzt lassen wir b mal NULL sein.
Auf AIX, Linux und NT liefert strlen(b) == 0
Auf AIX und NT wird in a auch wirklich nur `\x0`reingeschrieben. Auf Linux dagegen wird da "(null)" (im Klartext) reingeschrieben.
Jetzt stehe ich ratlos vor meinem Suse 8.2 und frag mich was das soll und wie ich das Problem lösen kann ohne eine Wrapperfunktion für das Linux-sprintf zu schreiben. (wie gesagt: der Codzeilen gibt es viele - auch mit sprintf !)
(Ach ja .. der Code ist auch nicht wirklich so wie oben, sondern mit variablen Argumentenlisten, etc. ...)
Wenn man sich das Codebeispiel (welches auf HPUX, Sinix, Aix und NT läuft) oben ansieht ist auch unmittelbar klar, dass es eine schlechte Idee ist sprintf in a was reinschreiben zu lassen, wiels nämlich abstürzt .. aber was solls.
Ein Linux - Programmiererforum gibts hier leider nicht aber vielleicht kann mir trotzdem jemand meine Frage beantworten (bzw. mir einen Tipp zu einem guten Linux-Programmiererforum geben)
Danke, Rainer