summaryrefslogtreecommitdiff
path: root/direct/timothy_tests/quick_tests/lib.c
blob: e29764565337d63412b29e24768985b74c8930d8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/*
 * YAFFS: Yet another FFS. A NAND-flash specific file system.
 *
 * Copyright (C) 2002-2010 Aleph One Ltd.
 *   for Toby Churchill Ltd and Brightstar Engineering
 *
 * Created by Timothy Manning <timothy@yaffs.net>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

#include "lib.h"

static int EXIT_ON_ERROR = 1;
static int  PRINT_LEVEL = 2;	//This sets the level of detail which is printed. There are 3 levels 0,1,2 and 3  
			//0 just prints the number of tests passed and failed.
			//1 is the basic print level. it will print the details of a failed test.
			//2 will print if a test passes and cleans. 
void set_print_level(int new_level)
{
	PRINT_LEVEL=new_level;
}

void set_exit_on_error(int num)
{
	EXIT_ON_ERROR=num;
}

int get_exit_on_error(void)
{
	return EXIT_ON_ERROR;
}


int EROFS_setup(void)
{
	int output= -1;
	output=yaffs_remount(YAFFS_MOUNT_POINT,1,1);
	if (output<0){
		print_message("failed to remount yaffs\n",2);
		return -1;
	}
	return 1;
}

int EROFS_clean(void)
{
	int output=-1;
	output= yaffs_remount(YAFFS_MOUNT_POINT,1,0);
	if (output<0){
		print_message("failed to remount yaffs\n",2);
		return -1;
	}
	return 1;
}


int set_up_ELOOP(void){
	int output1=1;
	int output2=1;
	int error =0;
	
	output1=yaffs_symlink(ELOOP_PATH,ELOOP2_PATH);
	if (output1 <0){
		error=yaffs_get_error();
		if (abs(error)==EEXIST){
			output1= 1;
		} else {
			output1=-1;
		}
	}
	
	output2=yaffs_symlink(ELOOP2_PATH,ELOOP_PATH);

	if (output2 <0){
		error=yaffs_get_error();
		if (abs(error)==EEXIST){
			output2= 1;
		} else {
			output2=-1;
		}
	}
	

	yaffs_set_error(0);	/*reset the last error to 0 */
	return (output1|output2);
}

void join_paths(char *path1,char *path2,char *new_path )
{

	//strcat(new_path,path1);	/*since all functions have this then pull it out*/
	if ( (path1[(sizeof(path1)/sizeof(char))-2]=='/') && path2[0]!='/') {
		/*paths are compatiable. concatanate them. note -2 is because of \0*/  
		strcat(new_path,path1);
		strcat(new_path,path2);		
		//char new_path[(sizeof(path1)/sizeof(char))+(sizeof(path2)/sizeof(char))];
		//strcpy(new_path,strcat(path1,path2)); 
		//return new_path;
	} else if ((path1[(sizeof(path1)/sizeof(char))-2]!='/') && path2[0]=='/') {
		/*paths are compatiable. concatanate them*/  
		strcat(new_path,path1);
		strcat(new_path,path2);		

	} else if ((path1[(sizeof(path1)/sizeof(char))-2]!='/') && path2[0]!='/') {
			/*need to add a "/". */  
		strcat(new_path,path1);
		strcat(new_path,"/");
		strcat(new_path,path2);

	} else if ((path1[(sizeof(path1)/sizeof(char))-2]=='/') && path2[0]=='/') {
		/*need to remove a "/". */
		/*yaffs does not mind the extra slash. */		
		strcat(new_path,path1);
		strcat(new_path,path2);

	} else {
		//error 
		//return -1;
	}
}

void print_message(char *message,char print_level)
{
	if (print_level <= PRINT_LEVEL){
		printf(message);
	}
}