diff options
| author | Adam <Adam@Anope.org> | 2010-06-25 20:00:21 -0400 |
|---|---|---|
| committer | Adam <Adam@Anope.org> | 2010-06-25 20:00:21 -0400 |
| commit | 03fbc7d281f5039a97c851970dea3cd8cfaefd64 (patch) | |
| tree | c527046a41b97751b1a52ba7046e36337f0d0373 /include/version.sh.c | |
| parent | cbcead4e89b3dc0dfb236fff9cb3e62b1b0707c0 (diff) | |
Changed the versioning system to use git
Diffstat (limited to 'include/version.sh.c')
| -rw-r--r-- | include/version.sh.c | 248 |
1 files changed, 0 insertions, 248 deletions
diff --git a/include/version.sh.c b/include/version.sh.c deleted file mode 100644 index 83dc2b9cd..000000000 --- a/include/version.sh.c +++ /dev/null @@ -1,248 +0,0 @@ -/* version file handler for win32. - * - * (C) 2003-2010 Anope Team - * Contact us at team@anope.org - * - * Please read COPYING and README for furhter details. - * - * Based on the original code of Epona by Lara. - * Based on the original code of Services by Andy Church. - * - * Written by Dominick Meglio <codemastr@unrealircd.com> - */ - -/* Needed due to Windows lack of a decent interpreter */ - -#include <stdio.h> -#include <string.h> -#include <cstdlib> -#include <cctype> - -long version_major, version_minor, version_patch, version_build, build; -char *version_extra = NULL; -char version[1024]; -char version_dotted[1024]; - -void load_ctrl(FILE *); -long get_value(char *); -char *get_value_str(char *); -char *strip(char *); -void parse_version(FILE *); -void write_version(FILE *, const char *); -void parse_line(FILE *, char *); - -int main(int argc, char *argv[]) -{ - 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: %s\n", argv[1]); - exit(0); - } - - load_ctrl(fd); - fclose(fd); - - _snprintf(version, 1024, "%ld.%ld.%ld%s (%ld)", version_major, version_minor, version_patch, version_extra ? version_extra : "", version_build); - - _snprintf(version_dotted, 1024, "%ld.%ld.%ld%s.%ld", version_major, version_minor, version_patch, version_extra ? version_extra : "", version_build); - - fd = fopen(argv[3], "r"); - - if (fd) - { - parse_version(fd); - fclose(fd); - } - else - build = 1; - - fd = fopen(argv[3], "w"); - write_version(fd, argv[2]); - fclose(fd); - - if (version_extra) - free(version_extra); -} - -void load_ctrl(FILE * fd) -{ - char buf[512]; - while (fgets(buf, 511, fd)) - { - char *var; - - strip(buf); - - var = strtok(buf, "="); - if (!var) - continue; - if (!strcmp(var, "VERSION_MAJOR")) - version_major = get_value(strtok(NULL, "")); - else if (!strcmp(var, "VERSION_MINOR")) - version_minor = get_value(strtok(NULL, "")); - else if (!strcmp(var, "VERSION_PATCH")) - version_patch = get_value(strtok(NULL, "")); - else if (!strcmp(var, "VERSION_BUILD")) - version_build = get_value(strtok(NULL, "")); - else if (!strcmp(var, "VERSION_EXTRA")) - version_extra = get_value_str(strtok(NULL, "")); - } -} - -char *strip(char *str) -{ - char *c; - if ((c = strchr(str, '\n'))) - *c = 0; - if ((c = strchr(str, '\r'))) - *c = 0; - return 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[1] != '"') - return atol(get_value_str(string)); - else - return 0; -} - -char *get_value_str(char *string) -{ - int len; - char *newstr; - - if (*string == '"') - ++string; - - len = strlen(string); - - if (string[len - 1] == '"') - string[len - 1] = 0; - if (!*string) - return NULL; - newstr = (char *)malloc(len + 1); - strcpy(newstr, string); - return newstr; - //return strdup(string); -} - -void parse_version(FILE * fd) -{ - char buf[1024]; - - while (fgets(buf, 1023, fd)) - { - char *para1; - - strip(buf); - para1 = strtok(buf, " \t"); - - if (!para1) - continue; - - if (!strcmp(para1, "#define")) - { - char *para2 = strtok(NULL, " \t"); - - if (!para2) - continue; - - if (!strcmp(para2, "BUILD")) - { - char *value = strtok(NULL, ""); - build = get_value(value); - build++; - return; - } - } - } - build = 1; -} - -void write_version(FILE *fd, const char *input) -{ - FILE *fdin = fopen(input, "r"); - char buf[1024]; - short until_eof = 0; - - while (fgets(buf, 1023, fdin)) - { - strip(buf); - - if (until_eof) - { - if (!strcmp(buf, "EOF")) - break; - else - parse_line(fd, buf); - } - - if (!strcmp(buf, "cat >$VERSIONH <<EOF")) - until_eof = 1; - } - - if (fdin) - fclose(fdin); -} - -void parse_line(FILE *fd, char *line) -{ - char *c; - for (c = line; *c; ++c) - { - /* It's a variable, find out which */ - if (*c == '$') - { - char *var, *varbegin; - - if (*(c + 1)) - ++c; - else - continue; - for (var = varbegin = c; var; ++var) - if (!isalnum(*var) && *var != '_') - break; - if (var != varbegin) - { - char tmp = *var; - - *var = 0; - if (!strcmp(varbegin, "VERSION_MAJOR")) - fprintf(fd, "%ld", version_major); - else if (!strcmp(varbegin, "VERSION_MINOR")) - fprintf(fd, "%ld", version_minor); - else if (!strcmp(varbegin, "VERSION_PATCH")) - fprintf(fd, "%ld", version_patch); - else if (!strcmp(varbegin, "VERSION_EXTRA")) - { - if (version_extra) - fprintf(fd, "%s", version_extra); - } - else if (!strcmp(varbegin, "VERSION_BUILD")) - fprintf(fd, "%ld", version_build); - else if (!strcmp(varbegin, "BUILD")) - fprintf(fd, "%ld", build); - else if (!strcmp(varbegin, "VERSION")) - fprintf(fd, "%s", version); - else if (!strcmp(varbegin, "VERSIONDOTTED")) - fprintf(fd, "%s", version_dotted); - if (tmp) - fputc(tmp, fd); - } - c = var; - } - else - fputc(*c, fd); - } - /* We only need \n here - we didn't open the file as binary -GD */ - fprintf(fd, "\n"); -} |
