irgendwo hier im Forum kann ich mich an ein Zitat erinnern, das da lautete: "Speicherallocation unter C ist boese."
Sagen wir: Es war interessant.
Wie auch immer. Folgendes: Ich moechte abhaengig von "meinen" Optionen verschiedene Optionen von einem externen Programm - hier GPG - aufrufen. Dazu folgende Umsetzung (Anm.: Uebersichtshalber habe ich die Positionen vertauscht, "TGfct_ramalloc" kommt zuerst.):
Code: Alles auswählen
[...]
system(strcat(TGfct_ramalloc("--list-public-key "), TGvar_keyid));
[...]
Code: Alles auswählen
char
*TGfct_ramalloc(char *TGfv_gpgopt)
{
/* Within variables:
* TGfv_gpgopt Given options for GPG
* TGfv_gpgbin GPG binary include options
*
*/
char *TGfv_gpgbin;
if (TGfv_gpgbin != NULL)
{
free(TGfv_gpgbin = NULL);
}
TGfv_gpgbin = (char *)malloc(5);
strcpy(TGfv_gpgbin, "gpg ");
TGfv_gpgbin = (char *)realloc(TGfv_gpgbin, strlen(TGfv_gpgopt) + 1);
TGfv_gpgbin = strcat(TGfv_gpgbin, TGfv_gpgopt);
}
Was mich allerdings ein wenig stoert, sind die beiden Schoenheitsfehler beim Compiler:
Code: Alles auswählen
gcc -Wall -o "abc" "abc.c" (in directory: ./src)
abc.c: In function ‘TGfct_ramalloc’:
abc.c:123:1: warning: control reaches end of non-void function [-Wreturn-type]
abc.c:123:8: warning: ‘TGfv_gpgbin’ is used uninitialized in this function [-Wuninitialized]
Compilation finished successfully.
Code: Alles auswählen
return(0);
gtz
- Wraith