staging.inyokaproject.org

Frage zu Glib: g_filename_to_uri ()

Status: Gelöst | Ubuntu-Version: Ubuntu MATE 18.04 (Bionic Beaver)
Antworten |

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6532

Um den Pfad zu einer Datei URI konform zu kodieren, verwende ich die Glib Funktion g_filename_to_uri (). Ich verwende dabei folgende Kode Sequenz:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
    unsigned char out[MD5_DIGEST_LENGTH+2];
    MD5_CTX     c;

    ...
    MD5_Init( &c );
    strcpy( file_path+file_path_len, filename );
    esc_path = g_filename_to_uri( file_path, NULL, NULL );
    MD5_Update( &c, esc_path, strlen(esc_path) );
    MD5_Final( out, &c );
    ...

Zu meiner Überraschung sehe ich da im String esc_path dass dort immer die Sequenz "file://" vorangestellt wird, was ich aber aus der Doku nicht direkt herauslesen kann.

Kann mir da jemand auf die Sprünge helfen und ist das immer so?

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

Dakuan schrieb:

Zu meiner Überraschung sehe ich da im String esc_path dass dort immer die Sequenz "file://" vorangestellt wird, was ich aber aus der Doku nicht direkt herauslesen kann.

Da steht ja in der Dokumentation:

Converts an absolute filename to an escaped ASCII-encoded URI, with the path component following Section 3.3. of RFC 2396.

file:// ist das benötigte Schema (vgl. rfc8089), wenn man eine Datei als URI abbilden will: File_URI_scheme

Dakuan

(Themenstarter)
Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6532

Danke für die Erklärung. Ich habe mir leider nur die deutsche Version angesehen und dort wurden auch weitere Präfixe, wie z.B. http:// oder ftp:// erwähnt. Daher bin ich davon aus gegangen, das man dies explizit angeben oder irgendwie auswählen muss.

Das erklärt aber auch einige Fehlerverhalten (Rückgabewert 0) in der Vergangenheit. Aber gut, wenn das definitiv so ist, kann ich mich darauf einstellen und muss keine weiteren Klimmzüge in Sachen String-Verarbeitung machen.

Edit: Die Doku könnte da aber auch genauer drauf hinweisen.

Antworten |