1 /*
2 * Rename
3 *
4 *
5 * $Id: rename.c $
6 */
7
8 #include <stdio.h>
9 #include <fcntl.h>
10 #include <malloc.h>
11 #include <string.h>
12
13
rename(char * oldname,char * newname)14 int rename(char *oldname, char *newname)
15 {
16
17 struct RND_FILE *myfile;
18 int myfile_missing;
19 int blockcount;
20
21 myfile = malloc(sizeof(struct RND_FILE));
22 strcpy(myfile->name,newname);
23 (myfile)->name_prefix='_';
24
25 myfile_missing = rnd_loadblock(&(myfile)->name_prefix, myfile, sizeof(myfile));
26 if (!myfile_missing) {
27 return (-1);
28 }
29
30 strcpy(myfile->name,oldname);
31 myfile_missing = rnd_loadblock(&(myfile)->name_prefix, myfile, sizeof(myfile));
32 if (myfile_missing) {
33 return (-1);
34 }
35
36 rnd_erase(&(myfile)->name_prefix);
37 strcpy(myfile->name,newname);
38 rnd_saveblock(&(myfile)->name_prefix, myfile, sizeof(myfile));
39
40 (myfile)->name_prefix='0';
41 while (!myfile_missing) {
42 strcpy(myfile->name,oldname);
43 myfile_missing = rnd_loadblock(&(myfile)->name_prefix, myfile, sizeof(myfile));
44 strcpy(myfile->name,newname);
45 rnd_saveblock(&(myfile)->name_prefix, myfile, sizeof(myfile));
46 rnd_erase(&(myfile)->name_prefix);
47 if ((myfile)->name_prefix=='9') (myfile)->name_prefix='A';
48 else (myfile)->name_prefix++;
49 }
50 return 0;
51 }
52