1521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o/* 2521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o * version.c --- Return the version of the ext2 library 3521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o * 4521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o * Copyright (C) 1997 Theodore Ts'o. 5521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o * 6521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o * %Begin-Header% 7543547a52a20cb7e69d74921b2f691078fd55d83Theodore Ts'o * This file may be redistributed under the terms of the GNU Library 8543547a52a20cb7e69d74921b2f691078fd55d83Theodore Ts'o * General Public License, version 2. 9521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o * %End-Header% 10521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o */ 11521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o 124cbe8af4b0d0c72fb28bb500c1bd8a46b00fdde3Theodore Ts'o#if HAVE_UNISTD_H 13521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o#include <unistd.h> 144cbe8af4b0d0c72fb28bb500c1bd8a46b00fdde3Theodore Ts'o#endif 15521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o#include <string.h> 16521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o#include <stdio.h> 17521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o#include <ctype.h> 18521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o 19b5abe6fac9c9e7caf4710501d1657d30e4857ef6Theodore Ts'o#include "ext2_fs.h" 20521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o#include "ext2fs.h" 21521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o 22521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o#include "../../version.h" 23521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o 24521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'ostatic const char *lib_version = E2FSPROGS_VERSION; 25521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'ostatic const char *lib_date = E2FSPROGS_DATE; 26521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o 27521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'oint ext2fs_parse_version_string(const char *ver_string) 28521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o{ 29521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o const char *cp; 30a2df22f1e938bbce844b75801106806b56c778b5Theodore Ts'o int version = 0, dot_count = 0; 31521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o 322ecc6fefa176f3203598225eb9ae2f61c3ae9c10Theodore Ts'o for (cp = ver_string; *cp; cp++) { 33a2df22f1e938bbce844b75801106806b56c778b5Theodore Ts'o if (*cp == '.') { 34a2df22f1e938bbce844b75801106806b56c778b5Theodore Ts'o if (dot_count++) 35a2df22f1e938bbce844b75801106806b56c778b5Theodore Ts'o break; 36a2df22f1e938bbce844b75801106806b56c778b5Theodore Ts'o else 37a2df22f1e938bbce844b75801106806b56c778b5Theodore Ts'o continue; 38a2df22f1e938bbce844b75801106806b56c778b5Theodore Ts'o } 39da83cb6e4833c7c19279d31c31c6c8b5851f17e2Theodore Ts'o if (!isdigit(*cp)) 40da83cb6e4833c7c19279d31c31c6c8b5851f17e2Theodore Ts'o break; 41521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o version = (version * 10) + (*cp - '0'); 42521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o } 43521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o return version; 44521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o} 45521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o 46521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o 47521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'oint ext2fs_get_library_version(const char **ver_string, 48521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o const char **date_string) 49521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o{ 50521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o if (ver_string) 51521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o *ver_string = lib_version; 52521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o if (date_string) 53521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o *date_string = lib_date; 54521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o 55521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o return ext2fs_parse_version_string(lib_version); 56521e36857227b21e7ab47b0a97f788d2af9f9717Theodore Ts'o} 57