diff --git a/src/hub.c b/src/hub.c index 1c7157e..2a11816 100644 --- a/src/hub.c +++ b/src/hub.c @@ -1445,8 +1445,53 @@ void uninstall(char *package) { } void upgrade(char *package) { + int fp; + int n, m; + int bytes_read; + char buffer[MAX_PATH_SIZE]; + char current_file[MAX_PATH_SIZE]; + + // Get installed directory so upgrade is installed in the same one + strcpy(buffer, configpath); + strcat(buffer, "\\IDB\\"); + strcat(buffer, package); + fp = open(buffer, O_RDONLY); + + if (fp < 0) { + n = (fp >> 0) & 0xff; + if (n == 0xD7) { + die("Package %s is not installed.", package); + } else { + printf("Error reading configuration %s: 0x%X\r\n", buffer, n); + explain(buffer, n); + die("%s", buffer); + } + } + + current_file[0] = '\0'; + m = 0; + while(1) { + bytes_read = read(buffer, MAX_PATH_SIZE, fp); + + for (n=0; n