FILE (C) Récupérer le chemin

03:53 modifié dans API AppKit #1
Bonjour,

j'ai trouvé un code hyper intéressant sur internet, il permet de decompresser du .ZIP par exemple.. le problème c'est qu'il ne récupère pas le chemin du dossier/fichier une fois décompressé !
Comme je n'y connais rien du tout, j'aimerai qu'on m'éclaircisse un peu :

<br />- (BOOL)_extractArchivePath:archivePath pipingDataToCommand:(NSString *)command<br />{<br />	// Get the file size.<br />	NSNumber *fs = [[[NSFileManager defaultManager] fileAttributesAtPath:archivePath traverseLink:NO] objectForKey:NSFileSize];<br />	if (fs == nil) { return NO; }<br />		<br />	// Thank you, Allan Odgaard!<br />	// (who wrote the following extraction alg.)<br />	<br />	long current = 0;<br />	FILE *fp, *cmdFP;<br />	sig_t oldSigPipeHandler = signal(SIGPIPE, SIG_IGN);<br />	if ((fp = fopen([archivePath UTF8String], &quot;r&quot;)))<br />	{<br />		setenv(&quot;DESTINATION&quot;, [[archivePath stringByDeletingLastPathComponent] UTF8String], 1);<br />		if ((cmdFP = popen([command cString], &quot;w&quot;)))<br />		{<br />			char buf[32*1024];<br />			long len;<br />			while((len = fread(buf, 1, 32 * 1024, fp)))<br />			{				<br />				current += len;<br />				<br />				NSEvent *event;<br />				while((event = [NSApp nextEventMatchingMask:NSAnyEventMask untilDate:nil inMode:NSDefaultRunLoopMode dequeue:YES]))<br />					[NSApp sendEvent:event];<br />				<br />				fwrite(buf, 1, len, cmdFP);<br /><br />			}<br />			pclose(cmdFP);<br />		}<br />		fclose(fp);<br />		<br />		<br />	}	<br />	<br />	signal(SIGPIPE, oldSigPipeHandler);<br />	return YES;<br />}<br />

archivePath = lefichier.zip
command = @ditto -x -k - \$DESTINATION\""

:o

Merci d'avance,
Louka.

Réponses

  • 03:53 modifié #2
    Bon en bidouillant un peu avec le terminal, j'ai enfin trouver ce que je voulais :
    <br />iLou:~ Loulou$ ditto -x -k -V /Users/Loulou/Desktop/downloads/Safari/Roger2.zip /Users/Loulou/Desktop/downloads/Safari/ <br /><br />&gt;&gt;&gt; Copying /Users/Loulou/Desktop/downloads/Safari/Roger2.zip <br /><br />copying file Roger/Deeper.app/Contents/Info.plist ... 941 bytes<br />...........etc.........<br />
    


    Le terminal me liste ensuite la liste de tous les fichiers contenus dans l'archive. Ce qui m'intéresse étant simplement le nom du dossier décompressé, je l'ai en début de chemin : "Roger" :P

    Un coup de NSTask et NSPipe + NSFileHandle et je trouverai mon bonheur !

  • BruBru Membre
    03:53 modifié #3
    C'est bien d'avoir trouvé tout seul, comme un grand.
    Personnellement, je n'avais rien compris à  ta question.

    .
  • septembre 2006 modifié #4
    dans 1158488831:

    C'est bien d'avoir trouvé tout seul, comme un grand.
    Personnellement, je n'avais rien compris à  ta question.


    Je voulais simplement savoir si avec le code que j'ai posté en premier, il y avait un moyen de récupérer le fichier de destination.
    De toute façon il me reste un problème, c'est que mon NSPipe ne contient aucun data  :crackboom:-

    EDIT : c'est bon, j'ai rajouté setStandardError: et j'ai enfin quelque chose
Connectez-vous ou Inscrivez-vous pour répondre.