summaryrefslogtreecommitdiff
path: root/include/version.sh.c
diff options
context:
space:
mode:
Diffstat (limited to 'include/version.sh.c')
-rw-r--r--include/version.sh.c38
1 files changed, 22 insertions, 16 deletions
diff --git a/include/version.sh.c b/include/version.sh.c
index f95ae7d63..2b2f0c198 100644
--- a/include/version.sh.c
+++ b/include/version.sh.c
@@ -19,8 +19,6 @@
#include <cstdlib>
#include <cctype>
-#define CTRL "version.log"
-
long version_major, version_minor, version_patch, version_build, build;
char *version_extra = NULL;
char version[1024];
@@ -32,16 +30,20 @@ long get_value(char *);
char *get_value_str(char *);
char *strip(char *);
void parse_version(FILE *);
-void write_version(FILE *);
+void write_version(FILE *, const char *);
void parse_line(FILE *, char *);
-int main()
+int main(int argc, char *argv[])
{
- FILE *fd = fopen(CTRL, "r");
+ if (argc < 4) {
+ fprintf(stderr, "Syntax: %s <version.log> <version.sh> <version.h>\n", argv[0]);
+ exit(1);
+ }
+ FILE *fd = fopen(argv[1], "r");
if (!fd) {
- fprintf(stderr, "Error: Unable to find control file: " CTRL "\n");
+ fprintf(stderr, "Error: Unable to find control file: %s\n", argv[1]);
exit(0);
}
@@ -54,7 +56,7 @@ int main()
_snprintf(version_dotted, 1024, "%ld.%ld.%ld%s.%ld", version_major, version_minor,
version_patch, (version_extra ? version_extra : ""), version_build);
- fd = fopen("version.h", "r");
+ fd = fopen(argv[3], "r");
if (fd) {
parse_version(fd);
@@ -63,10 +65,10 @@ int main()
build = 1;
- fd = fopen("version.h", "w");
- write_version(fd);
+ fd = fopen(argv[3], "w");
+ write_version(fd, argv[2]);
fclose(fd);
-
+
if (version_extra)
free(version_extra);
}
@@ -109,7 +111,7 @@ char *strip(char *str)
long get_value(char *string)
{
// XXX : if the fields in version.log are empty strtok returns a double quote, dont try to atol it then
- if (*string != '"')
+ if (string[1] != '"')
return atol(get_value_str(string));
else
return 0;
@@ -118,6 +120,7 @@ long get_value(char *string)
char *get_value_str(char *string)
{
int len;
+ char *newstr;
if (*string == '"')
string++;
@@ -128,7 +131,10 @@ char *get_value_str(char *string)
string[len - 1] = 0;
if (!*string)
return NULL;
- return strdup(string);
+ newstr = (char *)malloc(len + 1);
+ strcpy(newstr, string);
+ return newstr;
+ //return strdup(string);
}
void parse_version(FILE * fd)
@@ -161,9 +167,9 @@ void parse_version(FILE * fd)
build = 1;
}
-void write_version(FILE * fd)
+void write_version(FILE * fd, const char *input)
{
- FILE *fdin = fopen("include\\version.sh", "r");
+ FILE *fdin = fopen(input, "r");
char buf[1024];
short until_eof = 0;
@@ -178,7 +184,7 @@ void write_version(FILE * fd)
parse_line(fd, buf);
}
- if (!strcmp(buf, "cat >version.h <<EOF"))
+ if (!strcmp(buf, "cat >$VERSIONH <<EOF"))
until_eof = 1;
}
@@ -221,7 +227,7 @@ void parse_line(FILE * fd, char *line)
fprintf(fd, "%s", version);
else if (!strcmp(varbegin, "VERSIONDOTTED"))
fprintf(fd, "%s", version_dotted);
- fputc(tmp, fd);
+ if (tmp) fputc(tmp, fd);
}
c = var;
} else