home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Crawly Crypt Collection 1
/
crawlyvol1.bin
/
utility
/
disk
/
zorg_134
/
tos_40x
/
lastclst.c
next >
Wrap
C/C++ Source or Header
|
1994-02-02
|
2KB
|
74 lines
#include <stdio.h>
#include <stdlib.h>
#include <tos.h>
#include <ctype.h>
/********************************************************************
* *
* Récupère le fichier sur le dernier cluster *
* Suite à un bug du TOS, ce fichier est inaccessible *
* *
********************************************************************/
int main(void)
{
unsigned int first_sector = 0;
long size = 0;
char device = 0;
int size_in_sector = 0;
char ligne[80], name[80] = "", *buff;
int fd, err;
BPB bpb;
printf("Récupération du fichier en fin de disque inaccessible avec le TOS 4.0?\nRéalisé par Ludovic Rousseau le 7 Novembre 1993.\nMise à jour le 4 Février 1994.\n\n");
printf("Premier secteur (décimal) : ");
gets(ligne);
sscanf(ligne, "%u", &first_sector);
printf("taille en octets : ");
gets(ligne);
sscanf(ligne, "%ld", &size);
printf("device (lettre) : ");
gets(ligne);
sscanf(ligne, "%c", &device);
device = toupper(device) - 'A';
printf("nom complet de la copie : ");
gets(name);
printf("start %u, size %ld, device %c:, copie %s\nOK ? (O/N)", first_sector, size, device+'A', name);
if ((Cconin() & 0xFF) != 'o')
return 2;
bpb = *Getbpb(device);
size_in_sector = (int)((size + bpb.recsiz) / bpb.recsiz);
if ((buff = malloc(size_in_sector * bpb.recsiz)) == NULL)
{
puts("Pas assez de mémoire");
return 1;
}
if ((err = (int)Rwabs(0, buff, size_in_sector, first_sector, device)) < 0)
{
printf("Error du Rwabs : %ld\n", err);
return 1;
}
if ((fd = (int)Fcreate(name, 0)) < 0)
{
printf("Error du Fcreate : %d\n", fd);
return 1;
}
Fwrite(fd, size, buff);
Fclose(fd);
free(buff);
return 0;
} /* main */