Mailinglist Archive: opensuse-de (3878 mails)

< Previous Next >
Re: OT: Programmverzeichnis
  • From: eilert@xxxxxxxxxxxxxxxxxxxxxxxx (Eilert Brinkmann)
  • Date: Fri Dec 22 17:23:38 2000
  • Message-id: <xttae9o5q05.fsf@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>



Andreas Tirok wrote:
>         argv[0] enthaelt den kompletten
>         Programmnamen mit Pfad. 
>         Musste nur noch auseinandernehmen
>         zB. strcpy(progname, strrchr(argv[0], '\'))

Der Ansatz mit argv[0] ist richtig, aber so wird die letzte
Pfadkomponente mitsamt dem davorstehenden Schrägstrich kopiert. Den
Pfad des Verzeichnisses, in dem das Programm liegt, bekommt man, indem
man argv[0] kopiert und den hinteren Teil abschneidet:

  char* progname;
  if (strchr (argv[0], '/') == NULL) {
    /* Falls der Programmname ohne Pfad enthalten ist, aktuelles          */
     * Verzeichnis annehmen. Bin mir nicht sicher, ob das vorkommen kann. */
    progname = strdup (".");
  } else {
    /* Sonst Pfad kopieren und letzte Komponente abschneiden. */
    progname = strdup (argv[0]);
    *(strrchr (progname, "/")) = '\0';
  }

Zu beachten ist noch, daß das Ergebnis nicht ein absoluter Pfadname
sein muß, sondern auch ein relativer Pfadname sein kann.

Eilert

-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       Eilert Brinkmann -- Universitaet Bremen -- FB 3, Informatik
eilert@xxxxxxxxxxxxxxxxxxxxxxxx - eilert@xxxxxxx - eilert@xxxxxxxxxxxxxx
              http://www.informatik.uni-bremen.de/~eilert/

---------------------------------------------------------------------
To unsubscribe, e-mail: suse-linux-unsubscribe@xxxxxxxx
For additional commands, e-mail: suse-linux-help@xxxxxxxx


< Previous Next >
Follow Ups