[PATCH 3/6] fs-tests: integck: simplify dir_entry_info fields
Artem Bityutskiy
dedekind1 at gmail.com
Fri Apr 8 11:16:47 EDT 2011
From: Artem Bityutskiy <Artem.Bityutskiy at nokia.com>
Instead of using named union 'entry' in 'struct dir_entry_info'
and having to type long 'entry->entry.file', 'entry->entry.symlink',
etc, use anonymous union which makes the syntax simpler: 'entry->file',
'entry->symlink', etc.
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy at nokia.com>
---
tests/fs-tests/integrity/integck.c | 59 +++++++++++++++++------------------
1 files changed, 29 insertions(+), 30 deletions(-)
diff --git a/tests/fs-tests/integrity/integck.c b/tests/fs-tests/integrity/integck.c
index b53f11d..1801b20 100644
--- a/tests/fs-tests/integrity/integck.c
+++ b/tests/fs-tests/integrity/integck.c
@@ -89,13 +89,12 @@ struct dir_entry_info /* Each entry in a directory has one of these */
struct dir_info *parent; /* Parent directory */
char type; /* f => file, d => dir, s => symlink */
int checked; /* Temporary flag used when checking */
- union entry_
- {
+ union {
struct file_info *file;
struct dir_info *dir;
struct symlink_info *symlink;
void *target;
- } entry;
+ };
};
struct fd_info /* We keep a number of files open */
@@ -288,7 +287,7 @@ static void add_dir_entry(struct dir_info *parent, char type, const char *name,
if (entry->type == 'f') {
struct file_info *file = target;
- entry->entry.file = file;
+ entry->file = file;
entry->next_link = file->links;
if (file->links)
file->links->prev_link = entry;
@@ -297,14 +296,14 @@ static void add_dir_entry(struct dir_info *parent, char type, const char *name,
} else if (entry->type == 'd') {
struct dir_info *dir = target;
- entry->entry.dir = dir;
+ entry->dir = dir;
dir->entry = entry;
dir->name = copy_string(name);
dir->parent = parent;
} else if (entry->type == 's') {
struct symlink_info *symlink = target;
- entry->entry.symlink = symlink;
+ entry->symlink = symlink;
symlink->entry = entry;
}
}
@@ -320,7 +319,7 @@ static void remove_dir_entry(struct dir_entry_info *entry)
entry->next->prev = entry->prev;
if (entry->type == 'f') {
- struct file_info *file = entry->entry.file;
+ struct file_info *file = entry->file;
if (entry->prev_link)
entry->prev_link->next_link = entry->next_link;
@@ -373,11 +372,11 @@ static void dir_remove(struct dir_info *dir)
entry = dir->first;
if (entry->type == 'd')
- dir_remove(entry->entry.dir);
+ dir_remove(entry->dir);
else if (entry->type == 'f')
file_unlink(entry);
else if (entry->type == 's')
- symlink_remove(entry->entry.symlink);
+ symlink_remove(entry->symlink);
else
CHECK(0); /* Invalid struct dir_entry_info */
}
@@ -463,7 +462,7 @@ static void file_close_all(struct file_info *file)
static void file_unlink(struct dir_entry_info *entry)
{
- struct file_info *file = entry->entry.file;
+ struct file_info *file = entry->file;
char *path;
path = dir_path(entry->parent, entry->name);
@@ -1325,12 +1324,12 @@ static void dir_check(struct dir_info *dir)
entry = dir->first;
while (entry) {
if (entry->type == 'd') {
- dir_check(entry->entry.dir);
+ dir_check(entry->dir);
link_count += 1; /* <subdir>/.. */
} else if (entry->type == 'f')
- file_check(entry->entry.file, -1);
+ file_check(entry->file, -1);
else if (entry->type == 's')
- symlink_check(entry->entry.symlink);
+ symlink_check(entry->symlink);
else
CHECK(0);
entry = entry->next;
@@ -1405,13 +1404,13 @@ static struct file_info *pick_file(void)
if (!entry)
return NULL;
if (entry->type == 'f')
- return entry->entry.file;
+ return entry->file;
if (entry->type == 'd')
- if (entry->entry.dir->number_of_entries != 0)
+ if (entry->dir->number_of_entries != 0)
break;
entry = entry->next;
}
- dir = entry->entry.dir;
+ dir = entry->dir;
}
}
@@ -1450,7 +1449,7 @@ static struct dir_info *pick_dir(void)
}
if (!entry)
return dir;
- dir = entry->entry.dir;
+ dir = entry->dir;
if (tests_random_no(40) >= 30)
return dir;
}
@@ -1478,7 +1477,7 @@ static char *pick_rename_name(struct dir_info **parent,
if (!entry)
entry = dir->first;
if (!entry ||
- (entry->type == 'd' && entry->entry.dir->number_of_entries != 0))
+ (entry->type == 'd' && entry->dir->number_of_entries != 0))
return copy_string(make_name(dir));
if ((isdir && entry->type != 'd') ||
@@ -1512,9 +1511,9 @@ static void rename_entry(struct dir_entry_info *entry)
struct dir_info *p;
for (p = parent; p; p = p->parent)
- if (p == entry->entry.dir)
+ if (p == entry->dir)
break;
- if (p == entry->entry.dir) {
+ if (p == entry->dir) {
free(path);
free(name);
free(to);
@@ -1543,12 +1542,12 @@ static void rename_entry(struct dir_entry_info *entry)
free(to);
if (rename_entry && rename_entry->type == entry->type &&
- rename_entry->entry.target == entry->entry.target) {
+ rename_entry->target == entry->target) {
free(name);
return;
}
- add_dir_entry(parent, entry->type, name, entry->entry.target);
+ add_dir_entry(parent, entry->type, name, entry->target);
if (rename_entry)
remove_dir_entry(rename_entry);
remove_dir_entry(entry);
@@ -1684,33 +1683,33 @@ static void operate_on_entry(struct dir_entry_info *entry)
return;
}
if (entry->type == 's') {
- symlink_check(entry->entry.symlink);
+ symlink_check(entry->symlink);
/* If shrinking, 1 time in 50, remove a symlink */
if (shrink && tests_random_no(50) == 0)
- symlink_remove(entry->entry.symlink);
+ symlink_remove(entry->symlink);
return;
}
if (entry->type == 'd') {
/* If shrinking, 1 time in 50, remove a directory */
if (shrink && tests_random_no(50) == 0) {
- dir_remove(entry->entry.dir);
+ dir_remove(entry->dir);
return;
}
- operate_on_dir(entry->entry.dir);
+ operate_on_dir(entry->dir);
}
if (entry->type == 'f') {
/* If shrinking, 1 time in 10, remove a file */
if (shrink && tests_random_no(10) == 0) {
- file_delete(entry->entry.file);
+ file_delete(entry->file);
return;
}
/* If not growing, 1 time in 10, unlink a file with links > 1 */
- if (!grow && entry->entry.file->link_count > 1 &&
+ if (!grow && entry->file->link_count > 1 &&
tests_random_no(10) == 0) {
- file_unlink_file(entry->entry.file);
+ file_unlink_file(entry->file);
return;
}
- operate_on_file(entry->entry.file);
+ operate_on_file(entry->file);
}
}
--
1.7.2.3
More information about the linux-mtd
mailing list