From 8e6134babc8cc520d136fb067c7ac6b9dd7c17d2 Mon Sep 17 00:00:00 2001 From: Nikias Bassen Date: Mon, 16 Jul 2012 16:09:03 +0200 Subject: main: use file locking for version.xml updating --- src/idevicerestore.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/idevicerestore.c b/src/idevicerestore.c index e0a9e9c..a8e03a5 100644 --- a/src/idevicerestore.c +++ b/src/idevicerestore.c @@ -40,6 +40,8 @@ #include "limera1n.h" +#include "locking.h" + #define VERSION_XML "cache/version.xml" int use_apple_server; @@ -94,6 +96,11 @@ static int load_version_data(struct idevicerestore_client_t* client) struct stat fst; int cached = 0; + lock_info_t lockinfo; + if (lock_file(VERSION_XML ".lock", &lockinfo) != 0) { + error("WARNING: could not lock file\n"); + } + if ((stat(VERSION_XML, &fst) < 0) || ((time(NULL)-86400) > fst.st_mtime)) { __mkdir("cache", 0755); @@ -112,6 +119,11 @@ static int load_version_data(struct idevicerestore_client_t* client) char *verbuf = NULL; size_t verlen = 0; read_file(VERSION_XML, (void**)&verbuf, &verlen); + + if (unlock_file(&lockinfo) != 0) { + error("WARNING: could not unlock file\n"); + } + if (!verbuf) { error("ERROR: Could not load '" VERSION_XML "'.\n"); return -1; -- cgit v1.1-32-gdbae