aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/tools/genrevision/genrevision.cpp68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/tools/genrevision/genrevision.cpp b/src/tools/genrevision/genrevision.cpp
index 1c22655c782..be5a38e1be8 100644
--- a/src/tools/genrevision/genrevision.cpp
+++ b/src/tools/genrevision/genrevision.cpp
@@ -96,6 +96,47 @@ void extractDataFromHG(FILE* EntriesFile, std::string path, bool url, RawData& d
strcpy(data.time_str,"*");
}
+void extractDataFromArchive(FILE* EntriesFile, std::string path, bool url, RawData& data)
+{
+ char buf[200];
+
+ char hash_str[200];
+ char revision_str[200];
+
+ bool found = false;
+ fgets(buf,200,EntriesFile);
+ while(fgets(buf,200,EntriesFile))
+ {
+ if(sscanf(buf,"%s %s",revision_str,hash_str)==2)
+ {
+ found = true;
+ break;
+ }
+ }
+
+ if(!found)
+ {
+ strcpy(data.hash_str,"*");
+ strcpy(data.rev_str,"*");
+ strcpy(data.date_str,"*");
+ strcpy(data.time_str,"*");
+ return;
+ }
+
+ char thash_str[200];
+ for(int i = 11;i >= 0; --i)
+ {
+ thash_str[i] = hash_str[i];
+ }
+ thash_str[12] = '\0';
+
+ strcpy(data.hash_str,thash_str);
+ strcpy(data.rev_str,"Archive");
+
+ strcpy(data.date_str,"*");
+ strcpy(data.time_str,"*");
+}
+
void extractDataFromGit(FILE* EntriesFile, std::string path, bool url, RawData& data)
{
char buf[200];
@@ -241,6 +282,17 @@ bool extractDataFromHG(std::string filename, std::string path, bool url, RawData
return true;
}
+bool extractDataFromArchive(std::string filename, std::string path, bool url, RawData& data)
+{
+ FILE* EntriesFile = fopen(filename.c_str(), "r");
+ if(!EntriesFile)
+ return false;
+
+ extractDataFromArchive(EntriesFile,path,url,data);
+ fclose(EntriesFile);
+ return true;
+}
+
std::string generateHeader(char const* rev_str, char const* date_str, char const* time_str, char const* hash_str)
{
std::ostringstream newData;
@@ -339,6 +391,11 @@ int main(int argc, char **argv)
res = extractDataFromGit(path+".git/FETCH_HEAD",path,use_url,data);
if (!res)
res = extractDataFromGit(path+"_git/FETCH_HEAD",path,use_url,data);
+ // Archive data
+ if (!res)
+ res = extractDataFromArchive(path+".hg_archival.txt",path,use_url,data);
+ if (!res)
+ res = extractDataFromArchive(path+"_hg_archival.txt",path,use_url,data);
}
else if(git_prefered)
{
@@ -360,6 +417,11 @@ int main(int argc, char **argv)
res = extractDataFromSvn(path+".svn/entries",use_url,data);
if (!res)
res = extractDataFromSvn(path+"_svn/entries",use_url,data);
+ // Archive data
+ if (!res)
+ res = extractDataFromArchive(path+".hg_archival.txt",path,use_url,data);
+ if (!res)
+ res = extractDataFromArchive(path+"_hg_archival.txt",path,use_url,data);
}
else if(hg_prefered)
@@ -382,7 +444,13 @@ int main(int argc, char **argv)
res = extractDataFromGit(path+".git/FETCH_HEAD",path,use_url,data);
if (!res)
res = extractDataFromGit(path+"_git/FETCH_HEAD",path,use_url,data);
+ // Archive data
+ if (!res)
+ res = extractDataFromArchive(path+".hg_archival.txt",path,use_url,data);
+ if (!res)
+ res = extractDataFromArchive(path+"_hg_archival.txt",path,use_url,data);
}
+
if(res)
newData = generateHeader(data.rev_str,data.date_str,data.time_str,data.hash_str);
else