aboutsummaryrefslogtreecommitdiff
path: root/dir.c
diff options
context:
space:
mode:
Diffstat (limited to 'dir.c')
-rw-r--r--dir.c83
1 files changed, 42 insertions, 41 deletions
diff --git a/dir.c b/dir.c
index 4b692bb..891072f 100644
--- a/dir.c
+++ b/dir.c
@@ -51,16 +51,16 @@ uint16_t dir_add_direntry(const char *disk_mem, dir *d, const char *name,
assert (strlen(name) < NAME_LENGTH);
walker = bwalker_create(disk_mem, d->size, &(d->indirect));
-
- if(bwalker_direct_length(walker)*BLOCK_SIZE<d->size+32){
+
+ if(bwalker_direct_length(walker)*BLOCK_SIZE<d->size+32){
block = bwalker_allocate_block(walker);
}else{
block = bwalker_last_block(walker);
- if(!block)
+ if(!block)
goto CLEAN;
- }
-
+ }
+
dentry = (direntry *) disk_mem + BLOCKPOOL_OFFSET + (block * BLOCK_SIZE);
for(i = 0; i < 16; i++){
@@ -73,7 +73,7 @@ uint16_t dir_add_direntry(const char *disk_mem, dir *d, const char *name,
result = 1;
goto CLEAN;
}
- }
+ }
CLEAN:
bwalker_destroy(walker);
@@ -96,12 +96,12 @@ uint16_t dir_remove_direntry(const char *disk_mem, dir *d, const char *name)
assert(strlen(name) < NAME_LENGTH);
walker = bwalker_create(disk_mem, d->size, &(d->indirect));
-
+
/* Conseguimos el ultimo direntry */
block = bwalker_last_block(walker);
assert(block != 0);
last_dentry = (direntry *) disk_mem + BLOCKPOOL_OFFSET +
- (block * BLOCK_SIZE);
+ (block * BLOCK_SIZE);
assert(last_dentry[0].inum != 0);
for(i = 0; i < 16; i++){
if(last_dentry[i].inum == 0)
@@ -113,7 +113,7 @@ uint16_t dir_remove_direntry(const char *disk_mem, dir *d, const char *name)
while((block = bwalker_next(walker)))
{
rm_dentry = (direntry *) disk_mem + BLOCKPOOL_OFFSET +
- (block * BLOCK_SIZE);
+ (block * BLOCK_SIZE);
for(i = 0; i < 16; i++)
if(strcmp(name, rm_dentry[i].name) == 0)
{
@@ -129,13 +129,13 @@ uint16_t dir_remove_direntry(const char *disk_mem, dir *d, const char *name)
last_dentry->name[0] = '\0';
last_dentry->inum = 0;
last_dentry->symlink = 0;
-
+
goto END;
}
if(bwalker_block_is_last(walker))
break;
- }
+ }
END:
bwalker_destroy(walker);
return result;
@@ -144,27 +144,27 @@ END:
dir *dir_get_from_path(const char *disk_mem, const char *path)
{
- uint16_t inum = 0;
+ uint16_t inum = 0;
char *dir_name = NULL;
-
+
assert (disk_mem != NULL);
assert (path != NULL);
dir_name = calloc(strlen(path) + 1, sizeof(char));
strcpy(dir_name, path);
inum = get_inode_from_path(disk_mem, dirname(dir_name), 1);
- free(dir_name);
+ free(dir_name);
if(inum==0){
- return NULL;
- }
- return ((dir *)disk_mem+INODEPOOL_OFFSET+INODE_SIZE*inum);
-
+ return NULL;
+ }
+ return ((dir *)disk_mem+INODEPOOL_OFFSET+INODE_SIZE*inum);
+
}
uint16_t dir_search(const char *disk_mem, dir *idir,const char *name)
{
- bwalker *bw = NULL;
- direntry *dentry;
- uint16_t bnum, i;
+ bwalker *bw = NULL;
+ direntry *dentry;
+ uint16_t bnum, i;
assert(disk_mem != NULL);
@@ -176,24 +176,24 @@ uint16_t dir_search(const char *disk_mem, dir *idir,const char *name)
/* Salimos si esto esta vacio obviamente. */
if(idir->size == 0){
return 0;
- }
-
+ }
+
bw = bwalker_create(disk_mem, idir->size, &(idir->indirect));
- while ((bnum = bwalker_next(bw)))
+ while ((bnum = bwalker_next(bw)))
{
- dentry=(direntry *) disk_mem + BLOCKPOOL_OFFSET + (bnum*BLOCK_SIZE);
- for(i=0; i<16; i++){
- if(strcmp(name, dentry[i].name) == 0){
+ dentry=(direntry *) disk_mem + BLOCKPOOL_OFFSET + (bnum*BLOCK_SIZE);
+ for(i=0; i<16; i++){
+ if(strcmp(name, dentry[i].name) == 0){
bwalker_destroy(bw);
- return dentry[i].inum;
- }
- }
+ return dentry[i].inum;
+ }
+ }
if(bwalker_block_is_last(bw))
break;
}
bwalker_destroy(bw);
- return 0;
+ return 0;
}
int dir_rename_inode(const char *disk_mem, dir *d,
@@ -214,28 +214,29 @@ int dir_rename_inode(const char *disk_mem, dir *d,
/* Salimos si esto esta vacio obviamente. */
if(d->size == 0){
return 0;
- }
-
+ }
+
bw = bwalker_create(disk_mem, d->size, &(d->indirect));
- while ((bnum = bwalker_next(bw)))
+ while ((bnum = bwalker_next(bw)))
{
- dentry=(direntry *) disk_mem + BLOCKPOOL_OFFSET + (bnum*BLOCK_SIZE);
- for(i=0; i<16; i++){
- if(strcmp(old_name, dentry[i].name) == 0){
+ dentry=(direntry *) disk_mem + BLOCKPOOL_OFFSET + (bnum*BLOCK_SIZE);
+ for(i=0; i<16; i++){
+ if(strcmp(old_name, dentry[i].name) == 0){
bwalker_destroy(bw);
strcpy(dentry[i].name,new_name);
return 1;
- }
- }
+ }
+ }
if(bwalker_block_is_last(bw))
break;
}
bwalker_destroy(bw);
- return 0;
+ return 0;
}
-uint16_t dir_readdir(const char *disk_mem, dir *d, void *buf, fuse_fill_dir_t filler)
+uint16_t dir_readdir(const char *disk_mem, dir *d, void *buf,
+ fuse_fill_dir_t filler)
{
bwalker *bw = NULL;