summaryrefslogtreecommitdiff
path: root/src/update.c
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-11-17 19:43:59 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-11-17 19:43:59 (GMT)
commite3594aba9e05c6865d396418c028049cda92c2f3 (patch)
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904 /src/update.c
parentfb43f7d23e99765ae093fc45608901cb5907d1d8 (diff)
downloadpowder-e3594aba9e05c6865d396418c028049cda92c2f3.zip
powder-e3594aba9e05c6865d396418c028049cda92c2f3.tar.gz
Remove old code
Diffstat (limited to 'src/update.c')
-rw-r--r--src/update.c203
1 files changed, 0 insertions, 203 deletions
diff --git a/src/update.c b/src/update.c
deleted file mode 100644
index be78347..0000000
--- a/src/update.c
+++ /dev/null
@@ -1,203 +0,0 @@
-/**
- * Powder Toy - Update Helper
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#ifndef WIN32
-#include <sys/param.h>
-#endif
-#if !defined(MACOSX) && !defined(BSD)
-#include <malloc.h>
-#endif
-#include <string.h>
-
-#ifdef WIN32
-#include <windows.h>
-#else
-#include <unistd.h>
-#include <sys/stat.h>
-#endif
-#ifdef MACOSX
-#include <mach-o/dyld.h>
-#include <errno.h>
-#endif
-
-#include <update.h>
-
-char *exe_name(void)
-{
-#if defined WIN32
- char *name= (char *)malloc(64);
- DWORD max=64, res;
- while ((res = GetModuleFileName(NULL, name, max)) >= max)
- {
-#elif defined MACOSX
- char *fn=malloc(64),*name=malloc(PATH_MAX);
- uint32_t max=64, res;
- if (_NSGetExecutablePath(fn, &max) != 0)
- {
- fn = realloc(fn, max);
- _NSGetExecutablePath(fn, &max);
- }
- if (realpath(fn, name) == NULL)
- {
- free(fn);
- free(name);
- return NULL;
- }
- res = 1;
-#else
- char fn[64], *name=malloc(64);
- size_t max=64, res;
- sprintf(fn, "/proc/self/exe");
- memset(name, 0, max);
- while ((res = readlink(fn, name, max)) >= max-1)
- {
-#endif
-#ifndef MACOSX
- max *= 2;
- name = realloc(name, max);
- memset(name, 0, max);
- }
-#endif
- if (res <= 0)
- {
- free(name);
- return NULL;
- }
- return name;
-}
-
-int update_start(char *data, int len)
-{
- char *self=exe_name(), *temp;
-#ifdef WIN32
- char *p;
-#endif
- FILE *f;
- int res = 1;
-
- if (!self)
- return 1;
-
-#ifdef WIN32
- temp = malloc(strlen(self)+12);
- strcpy(temp, self);
- p = temp + strlen(temp) - 4;
- if (_stricmp(p, ".exe"))
- p += 4;
- strcpy(p, "_update.exe");
-
- if (!MoveFile(self, temp))
- goto fail;
-
- f = fopen(self, "wb");
- if (!f)
- goto fail;
- if (fwrite(data, 1, len, f) != len)
- {
- fclose(f);
- DeleteFile(self);
- goto fail;
- }
- fclose(f);
-
- if ((int)ShellExecute(NULL, "open", self, NULL, NULL, SW_SHOWNORMAL) <= 32)
- {
- DeleteFile(self);
- goto fail;
- }
-
- return 0;
-#else
- temp = malloc(strlen(self)+8);
- strcpy(temp, self);
- strcat(temp, "-update");
-
- f = fopen(temp, "w");
- if (!f)
- goto fail;
- if (fwrite(data, 1, len, f) != len)
- {
- fclose(f);
- unlink(temp);
- goto fail;
- }
- fclose(f);
-
- if (chmod(temp, 0755))
- {
- unlink(temp);
- goto fail;
- }
-
- if (rename(temp, self))
- {
- unlink(temp);
- goto fail;
- }
-
- execl(self, "powder-update", NULL);
-#endif
-
-fail:
- free(temp);
- free(self);
- return res;
-}
-
-int update_finish(void)
-{
-#ifdef WIN32
- char *temp, *self=exe_name(), *p;
- int timeout = 60, err;
-
- temp = malloc(strlen(self)+12);
- strcpy(temp, self);
- p = temp + strlen(temp) - 4;
- if (_stricmp(p, ".exe"))
- p += 4;
- strcpy(p, "_update.exe");
-
- while (!DeleteFile(temp))
- {
- err = GetLastError();
- if (err == ERROR_FILE_NOT_FOUND)
- {
- // just as well, then
- free(temp);
- return 0;
- }
- Sleep(500);
- timeout--;
- if (timeout <= 0)
- {
- free(temp);
- return 1;
- }
- }
- free(temp);
-#endif
- return 0;
-}
-
-void update_cleanup(void)
-{
-#ifdef WIN32
- update_finish();
-#endif
-}