2013-06-24 47 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