return l;\r
}\r
\r
+char* strncat(char *dest, const char *src, unsigned int n)\r
+{\r
+ unsigned int dest_len = strlen(dest);\r
+ unsigned int i;\r
+ \r
+ for (i = 0 ; i < n && src[i] != '\0' ; i++)\r
+ dest[dest_len + i] = src[i];\r
+ dest[dest_len + i] = '\0';\r
+ \r
+ return dest;\r
+}\r
+\r
+\r
void LEDsoff()\r
{\r
LED_A_OFF();\r
// convert to uS and call microsecond delay function\r
SpinDelayUs(ms*1000);\r
}\r
+\r
+/* Similar to FpgaGatherVersion this formats stored version information\r
+ * into a string representation. It takes a pointer to the struct version_information,\r
+ * verifies the magic properties, then stores a formatted string, prefixed by\r
+ * prefix in dst.
+ */\r
+void FormatVersionInformation(char *dst, int len, const char *prefix, void *version_information)\r
+{\r
+ struct version_information *v = (struct version_information*)version_information;\r
+ dst[0] = 0;\r
+ strncat(dst, prefix, len);\r
+ if(v->magic != VERSION_INFORMATION_MAGIC) {\r
+ strncat(dst, "Missing/Invalid version information", len);\r
+ return;\r
+ }\r
+ if(v->versionversion != 1) {\r
+ strncat(dst, "Version information not understood", len);\r
+ return;\r
+ }\r
+ if(!v->present) {\r
+ strncat(dst, "Version information not available", len);\r
+ return;\r
+ }\r
+ \r
+ strncat(dst, v->svnversion, len);\r
+ if(v->clean == 0) {\r
+ strncat(dst, "-unclean", len);\r
+ } else if(v->clean == 2) {\r
+ strncat(dst, "-suspect", len);\r
+ }\r
+ \r
+ strncat(dst, " ", len);\r
+ strncat(dst, v->buildtime, len);\r
+}\r