2010-04-05 13 views
1

Actuellement, lorsque j'ouvre un fichier avec mon programme, je peux sélectionner des fichiers sur un serveur en cliquant sur le nom du serveur dans la barre latérale d'un NSOpenPanel, puis en sélectionnant le fichier. Pas de problème, cela fonctionne très bien pour utiliser le fichier tant que le répertoire partagé est monté. Je reçois un chemin comme "/Volumes/SHARENAME/filename.bla".Comment puis-je obtenir le nom d'hôte du serveur à partir d'un répertoire monté avec cacao/obj-c?

Ma question est comment puis-je obtenir le nom d'hôte du serveur de l'ordinateur d'où il provient. Par exemple, si j'ai cliqué sur le périphérique avec le nom SERVERNAME sous "Shared" dans le NSOpenPanel, comment puis-je obtenir SERVERNAME à partir de "/Volumes/SHARENAME/filename.bla".

J'ai examiné pas mal de documentation et n'ai pas trouvé de solution à ce problème.

Toute aide à cet égard sera grandement appréciée. Je vous remercie.

Répondre

0

Ce n'est pas une manière Objective-C de le faire, mais parfois, en utilisant popen(..), vous pouvez obtenir des informations que vous pouvez analyser à partir d'une commande unix.

Exemple

#include <stdio.h> 
#include <string.h> 

int main() { 
    FILE *fp = popen("df", "r"); // see man page for df 
    if (fp) { 
    char line[4096]; 
    while (line == fgets(line, 4096, fp)) { 
     if (strstr(line, "/Volumes/SHARENAME")) { // You need the mount point 
     char host[256]; 
     sscanf(line, "%s", host); 
     printf("Connected: %s\n", host); 
     } 
    } 
    pclose(fp); 
    } 
    return 0; 
} 
+0

Merci pour la réponse rapide. Je ne suis pas assez averti avec C pour avoir compris cela, mais ça va certainement faire l'affaire. – Andrew

+0

Une réponse similaire a été donnée dans http://stackoverflow.com/questions/24848211/get-unc-path-in-osx-of-mounted-share/24874696#24874696 où 'df' est appelé avec' -P' dans afin de sélectionner le répertoire cible. –

+0

Ce n'était que la moitié de la vérité (et il est trop tard pour éditer); le '-P' n'a rien à voir avec l'argument (directory), mais définit la taille du bloc à 512 pour être indépendant de l'environnement BLOCKSIZE. variable. Puisque nous n'essayons pas d'analyser les nombres, nous ne nous soucions pas des unités, et le '-P' n'est pas nécessaire. (C'est toujours une bonne idée et un raccourci pour passer l'argument du répertoire.) –