获取FUSE版本字符串

3
有没有返回FUSE版本字符串的函数? fuse_common.h 提供了函数int fuse_version(void),它返回主要版本号乘以10加上次要版本号的值,这两个值都是从#define值派生出来的。(例如,在我的平台上,它返回27)。然而,我正在寻找的是一些char* fuse_version(void)函数,它将返回类似于2.7.3的内容。
2个回答

3

正如你自己所说,版本号被定义在fuse_common.h文件中。如果您不想使用helper_version,就像@Alexguitar所说的那样,你可以编写一个小程序来实现它--但似乎只有前两个数字(主要和次要版本号)是可用的:

#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

2
在 fuse 的源代码中,包含在 include/config.h 文件中的内容如下:
/* 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 建议的函数。


1
由于这是一个静态函数,没有相应的头文件,我猜想人们被迫使用major.minor模式。不知道他们是否会接受补丁 :) - Xophmeister
1
合并请求已提交 :) - Xophmeister

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接