获取FUSE版本字符串

时间:2015-07-22 15:28:12

标签: c fuse

是否有返回FUSE版本字符串的函数?

fuse_common.hint fuse_version(void),返回主要版本,乘以10,加上次要版本;两者都来自#define值。 (例如,这会在我的平台上返回27)。但是,我正在寻找的是一些char* fuse_version(void)会返回类似2.7.3的内容。

2 个答案:

答案 0 :(得分:3)

正如您所说,版本在fuse_common.h中定义。如果你不想使用helper_version,因为@Alexguitar说你可能只写一个小程序来做 - 但似乎只有两个第一个数字(主要和次要)可用:< / p>

#include <fuse/fuse.h>
#include <stdlib.h>
#include <stdio.h>

char* str_fuse_version(void) {
    static char str[10] = {0,0,0,0,0,0,0,0,0,0};
    if (str[0]==0) {
        int v = fuse_version();
        int a = v/10;
        int b = v%10;
        snprintf(str,10,"%d.%d",a,b); 
    }
    return str;
}


int main () {
    printf("%s\n", str_fuse_version());
    exit(EXIT_SUCCESS);
}

注意:您应该包含fuse/fuse.h而不是fuse_common.h;另外,编译时可能需要传递-D_FILE_OFFSET_BITS=64

$ gcc -Wall fuseversiontest.c -D_FILE_OFFSET_BITS=64  -lfuse

$ ./a.out
2.9

答案 1 :(得分:2)

在include / config.h中的fuse的源代码中你有:

/* Define to the version of this package. */
#define PACKAGE_VERSION "2.9.4"

此外,lib / helper.c中还有一个函数可以打印它。

static void helper_version(void)
{
    fprintf(stderr, "FUSE library version: %s\n", PACKAGE_VERSION);
}

编辑:

我确实认识到包版本控制字符串仅供内部使用,因此您可能会遇到fuse_common.h公开的主要和次要数字。你可能不得不写一个像@Jay建议的功能。