]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/loclass/fileutils.c
Merge branch 'iclass-research' of https://github.com/PenturaLabs/proxmark3 into Pentu...
[proxmark3-svn] / client / loclass / fileutils.c
diff --git a/client/loclass/fileutils.c b/client/loclass/fileutils.c
new file mode 100644 (file)
index 0000000..2f7b6b6
--- /dev/null
@@ -0,0 +1,65 @@
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <sys/stat.h>
+#include <stdarg.h>
+#include "fileutils.h"
+#include "ui.h"
+/**
+ * @brief checks if a file exists
+ * @param filename
+ * @return
+ */
+int fileExists(const char *filename) {
+       struct stat st;
+       int result = stat(filename, &st);
+       return result == 0;
+}
+
+int saveFile(const char *preferredName, const char *suffix, const void* data, size_t datalen)
+{
+       int size = sizeof(char) * (strlen(preferredName)+strlen(suffix)+5);
+       char * fileName = malloc(size);
+
+       memset(fileName,0,size);
+       int num = 1;
+       sprintf(fileName,"%s.%s", preferredName, suffix);
+       while(fileExists(fileName))
+       {
+               sprintf(fileName,"%s-%d.%s", preferredName, num, suffix);
+               num++;
+       }
+       /* We should have a valid filename now, e.g. dumpdata-3.bin */
+
+       /*Opening file for writing in binary mode*/
+       FILE *fileHandle=fopen(fileName,"wb");
+       if(!fileHandle) {
+               prnlog("Failed to write to file '%s'", fileName);
+               return 1;
+       }
+       fwrite(data, 1, datalen, fileHandle);
+       fclose(fileHandle);
+       prnlog("Saved data to '%s'", fileName);
+       free(fileName);
+
+       return 0;
+}
+
+/**
+ * Utility function to print to console. This is used consistently within the library instead
+ * of printf, but it actually only calls printf (and adds a linebreak).
+ * The reason to have this method is to
+ * make it simple to plug this library into proxmark, which has this function already to
+ * write also to a logfile. When doing so, just delete this function.
+ * @param fmt
+ */
+void prnlog(char *fmt, ...)
+{
+
+       va_list args;
+       va_start(args,fmt);
+    PrintAndLog(fmt, args);
+    //vprintf(fmt,args);
+       va_end(args);
+    //printf("\n");
+}
Impressum, Datenschutz