2013-06-24 1 views
0

У меня есть небольшая проблема, когда я пытаюсь извлечь файл с помощью Libtar.Извлечь файл с помощью LibTar

Это мой код:

int htlp_decompress_decompress(char * filename) { 

    TAR * tar_file; 
    char rootdir[200]; 
    strcpy(rootdir, "/var/cache/htpackage/"); 

    if (tar_open(&tar_file, filename, NULL, O_RDONLY, 0, TAR_GNU) == -1) { 
     fprintf(stderr, "tar_open(): %s\n", strerror(errno)); 
     return -1; 
    } 

    if (tar_extract_all(tar_file, rootdir) != 0) { 
     fprintf(stderr, "tar_extract_all(): %s\n", strerror(errno)); 
     return -1; 
    } 

    if (tar_close(tar_file) != 0) { 
     fprintf(stderr, "tar_close(): %s\n", strerror(errno)); 
     return -1; 
    } 

    return 0; 
} 

Проблема заключается в том, что я получаю ошибку «Недопустимый аргумент» в функции tar_extract_all(). Но я не могу знать, что вызывает эту ошибку.

Кто-нибудь знает, что происходит?

Благодарим за внимание.

+0

** Исправлена ​​ошибка ** –

+1

'Исправлена ​​ошибка' - как? – KevinDTimm

ответ

0

По человеко-странице функция декларации:

int tar_open(TAR **t, char *pathname, tartype_t *type, int oflags, int mode, int options); 

Это означает, что вы передаете O_RDONLY в качестве параметра tartype_t *type. Это неверно. Возможно, вы имели в виду это:

tar_open(&tar_file, filename, NULL, O_RDONLY, 0, TAR_GNU) 
+0

Хорошо, позвольте мне посмотреть, работает ли это, спасибо за вашу помощь! –

+0

Я исправил ошибку, но все равно не работает. :( ** Спасибо за помощь! ** –

+0

Итак, если вы все еще ожидаете помощи, возможно, вы можете предоставить дополнительную информацию о том, что означает «не работает». =) – paddy