Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 7868 → Rev 7869

/programs/fs/unimg/make.bat
File deleted
\ No newline at end of file
/programs/fs/unimg/fat12.c
1,3 → 1,14
/* # KolibriOS Image Unpacker #
 
Extracts files from FAT12 KolibriOS image to specified folder.
 
Usage: unimg path/to/img [output/folder] [-e]
-e: Exit on success
If output folder is skipped, the image will be unpacked at /TMP0/1/[file-name]
 
Author: Magomed Kostoev (Boppan, mkostoevr): FAT12 file system, driver.
Contributor: Kiril Lipatov (Leency) */
 
#include <stdarg.h>
#include <stdio.h>
#include <stdint.h>
4,6 → 15,14
#include <stdlib.h>
#include <string.h>
 
#define TCC 0
#define GCC 1
#include "compiller.h"
 
#ifdef GCC
#define con_init con_init
#endif
 
typedef struct {
size_t length;
size_t capacity;
49,12 → 68,21
static int fat12__error(Fat12 *this, const char *errorMessage);
 
static void mkdir(const char *name) {
#ifdef TCC
struct {
int fn;
int unused[4];
char b;
const char *path __attribute__((packed));
} info;
#else
struct {
int fn;
int unused[4];
char b;
const char *path;
} __attribute__((packed)) info;
#endif
memset(&info, 0, sizeof(info));
info.fn = 9;
info.b = 0;
394,7 → 422,14
}
}
printf("Extracting %s\n", outputPath->data);
#ifdef TCC
FILE *fp = NULL;
if (!(fp = fopen(outputPath->data, "wb"))) { perror(NULL); }
fwrite(data, 1, size, fp);
fclose(fp);
#else
writeFile(outputPath->data, size, data);
#endif
outputPath->data[outputPath->length] = '\0';
return 0;
}
401,14 → 436,20
 
 
 
int main(int argc, char **argv) {
int main(int argc, char* argv[]) {
Fat12 fat12 = { 0 };
char *imageFile = NULL;
String outputFolder = { 0 };
int exit_code = 0;
 
char app_title[] = "UnImg - kolibri.img file unpacker";
con_init(-1, -1, -1, 350, app_title);
 
if (argc < 2) {
puts(" Usage:\n");
puts(" unimg \"/path/to/kolibri.img\" \"/optional/extract/path\"\n");
puts(" Usage:");
puts(" unimg \"/path/to/kolibri.img\" \"/optional/extract/path\"");
puts(" where optional key [-e] is exit on success");
exit(exit_code);
return -1;
} else {
imageFile = argv[1];
415,7 → 456,6
printf("File: %s\n", imageFile);
}
 
outputFolder.capacity = 4096;
outputFolder.data = malloc(outputFolder.capacity);
 
428,6 → 468,9
 
outputFolder.length = strlen(outputFolder.data);
 
// handle -e parameter - exit on success
if (argc >= 3 && !strcmp(argv[argc - 1], "-e")) { exit_code = 1; }
 
if (!fat12__open(&fat12, imageFile)) {
return handleError(&fat12);
}
436,5 → 479,6
return handleError(&fat12);
}
 
puts("\nDONE!\n");
puts("\nDONE!");
exit(exit_code);
}
/programs/fs/unimg/make_gcc.bat
0,0 → 1,7
@echo #define COMPILLER TCC > compiller.h
 
gcc -m32 -c -fomit-frame-pointer -IC:\Users\Boppan\Documents\KolibriOS\contrib/sdk/sources/newlib/libc/include fat12.c -o unimg.o -Wall -Wextra
kos32-ld unimg.o -o unimg -static -S -nostdlib -T C:\Users\Boppan\Documents\KolibriOS\contrib/sdk/sources/newlib/app.lds --image-base 0 -L "C:\Program Files (x86)\kos32-msys-5.4.0\win32\lib" -lgcc -lapp -lc.dll
kos32-objcopy unimg -O binary
@del compiller.h
@pause
/programs/fs/unimg/make_tcc.bat
0,0 → 1,4
@echo #define COMPILLER TCC > compiller.h
kos32-tcc fat12.c -lck -o unimg
@del compiller.h
@pause