132923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o/*
232923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o * version.c --- Return the version of the blkid library
332923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o *
432923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o * Copyright (C) 2004 Theodore Ts'o.
532923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o *
632923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o * %Begin-Header%
732923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o * This file may be redistributed under the terms of the GNU Public
832923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o * License.
932923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o * %End-Header%
1032923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o */
1132923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o
1232923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o#if HAVE_UNISTD_H
1332923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o#include <unistd.h>
1432923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o#endif
1532923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o#include <string.h>
1632923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o#include <stdio.h>
1732923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o#include <ctype.h>
1832923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o
19e1f085079525c0ed4c5ab1f2abedaf9407a7b8daTheodore Ts'o#include <blkid/blkid.h>
2032923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o#include "../../version.h"
2132923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o
2232923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'ostatic const char *lib_version = E2FSPROGS_VERSION;
2332923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'ostatic const char *lib_date = E2FSPROGS_DATE;
2432923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o
2532923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'oint blkid_parse_version_string(const char *ver_string)
2632923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o{
2732923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o	const char *cp;
2832923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o	int version = 0;
2932923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o
3032923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o	for (cp = ver_string; *cp; cp++) {
3132923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o		if (*cp == '.')
3232923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o			continue;
3332923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o		if (!isdigit(*cp))
3432923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o			break;
3532923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o		version = (version * 10) + (*cp - '0');
3632923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o	}
3732923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o	return version;
3832923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o}
3932923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o
4032923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'oint blkid_get_library_version(const char **ver_string,
4132923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o			       const char **date_string)
4232923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o{
4332923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o	if (ver_string)
4432923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o		*ver_string = lib_version;
4532923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o	if (date_string)
4632923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o		*date_string = lib_date;
4732923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o
4832923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o	return blkid_parse_version_string(lib_version);
4932923fa402b5bc3800bd22a3fa4624906b7d7debTheodore Ts'o}
50