C 获取保险丝版本字符串

C 获取保险丝版本字符串,c,fuse,C,Fuse,是否有返回FUSE版本字符串的函数 fuse\u common.h具有int fuse\u version(void),返回主版本乘以10,再加上次版本;这两个值都源自定义值。(例如,在我的平台上返回27)。然而,我要寻找的是一些char*fuse\u版本(void),它会在include/config.h中的fuse源代码中返回类似2.7.3,您有: /* Define to the version of this package. */ #define PACKAGE_VERSION "2.

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


fuse\u common.h
具有
int fuse\u version(void)
,返回主版本乘以10,再加上次版本;这两个值都源自定义值。(例如,在我的平台上返回
27
)。然而,我要寻找的是一些
char*fuse\u版本(void)
,它会在include/config.h中的fuse源代码中返回类似
2.7.3

,您有:

/* 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建议的函数。

正如您自己所说,该版本在
fuse\u common.h
中定义。如果您不想使用
helper\u 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);
}

由于这是一个静态函数,没有相应的头,我想人们不得不使用major.minor模式。我想知道他们是否会接受补丁:):)
$ gcc -Wall fuseversiontest.c -D_FILE_OFFSET_BITS=64  -lfuse

$ ./a.out
2.9