@@ -123,7 +123,6 @@ uint64_t pathname_init(pathname_t* pathname, const char* string)
123123
124124 memset (pathname -> string , 0 , MAX_PATH );
125125 pathname -> mode = MODE_NONE ;
126- pathname -> isValid = false;
127126
128127 if (string == NULL )
129128 {
@@ -169,7 +168,6 @@ uint64_t pathname_init(pathname_t* pathname, const char* string)
169168
170169 if (string [index ] != ':' )
171170 {
172- pathname -> isValid = true;
173171 return 0 ;
174172 }
175173
@@ -216,7 +214,6 @@ uint64_t pathname_init(pathname_t* pathname, const char* string)
216214 pathname -> mode |= mode ;
217215 }
218216
219- pathname -> isValid = true;
220217 return 0 ;
221218}
222219
@@ -595,7 +592,7 @@ uint64_t path_step(path_t* path, mode_t mode, const char* name, namespace_t* ns)
595592
596593uint64_t path_walk (path_t * path , const pathname_t * pathname , namespace_t * ns )
597594{
598- if (path == NULL || ! PATHNAME_IS_VALID ( pathname ) || ns == NULL )
595+ if (path == NULL || pathname == NULL || ns == NULL )
599596 {
600597 errno = EINVAL ;
601598 return ERR ;
@@ -635,7 +632,7 @@ uint64_t path_walk(path_t* path, const pathname_t* pathname, namespace_t* ns)
635632
636633uint64_t path_walk_parent (path_t * path , const pathname_t * pathname , char * outLastName , namespace_t * ns )
637634{
638- if (path == NULL || ! PATHNAME_IS_VALID ( pathname ) || outLastName == NULL || ns == NULL )
635+ if (path == NULL || pathname == NULL || outLastName == NULL || ns == NULL )
639636 {
640637 errno = EINVAL ;
641638 return ERR ;
@@ -693,7 +690,7 @@ uint64_t path_walk_parent(path_t* path, const pathname_t* pathname, char* outLas
693690uint64_t path_walk_parent_and_child (const path_t * from , path_t * outParent , path_t * outChild , const pathname_t * pathname ,
694691 namespace_t * ns )
695692{
696- if (from == NULL || outParent == NULL || outChild == NULL || ! PATHNAME_IS_VALID ( pathname ) || ns == NULL )
693+ if (from == NULL || outParent == NULL || outChild == NULL || pathname == NULL || ns == NULL )
697694 {
698695 errno = EINVAL ;
699696 return ERR ;
@@ -781,8 +778,6 @@ uint64_t path_to_name(const path_t* path, pathname_t* pathname)
781778 memmove (buffer , ptr , totalLen + 1 );
782779
783780 pathname -> mode = MODE_NONE ;
784- pathname -> isValid = true;
785-
786781 return 0 ;
787782}
788783
@@ -838,4 +833,50 @@ uint64_t mode_check(mode_t* mode, mode_t maxPerms)
838833 }
839834
840835 return 0 ;
841- }
836+ }
837+
838+ #ifdef _TESTING_
839+
840+ #include <kernel/utils/test.h>
841+
842+ TEST_DEFINE (path )
843+ {
844+ pathname_t pathname ;
845+
846+ TEST_ASSERT (pathname_init (& pathname , "/usr/bin/init" ) == 0 );
847+ TEST_ASSERT (strcmp (pathname .string , "/usr/bin/init" ) == 0 );
848+ TEST_ASSERT (pathname .mode == MODE_NONE );
849+
850+ TEST_ASSERT (pathname_init (& pathname , "/dev/sda:read:write" ) == 0 );
851+ TEST_ASSERT (strcmp (pathname .string , "/dev/sda" ) == 0 );
852+ TEST_ASSERT ((pathname .mode & (MODE_READ | MODE_WRITE )) == (MODE_READ | MODE_WRITE ));
853+
854+ TEST_ASSERT (pathname_init (& pathname , "/tmp/file:c:w" ) == 0 );
855+ TEST_ASSERT (strcmp (pathname .string , "/tmp/file" ) == 0 );
856+ TEST_ASSERT ((pathname .mode & (MODE_CREATE | MODE_WRITE )) == (MODE_CREATE | MODE_WRITE ));
857+
858+ TEST_ASSERT (pathname_init (& pathname , "/var/log:append:c" ) == 0 );
859+ TEST_ASSERT (strcmp (pathname .string , "/var/log" ) == 0 );
860+ TEST_ASSERT ((pathname .mode & (MODE_APPEND | MODE_CREATE )) == (MODE_APPEND | MODE_CREATE ));
861+
862+ TEST_ASSERT (pathname_init (& pathname , "/file:rw" ) == 0 );
863+ TEST_ASSERT (strcmp (pathname .string , "/file" ) == 0 );
864+ TEST_ASSERT ((pathname .mode & (MODE_READ | MODE_WRITE )) == (MODE_READ | MODE_WRITE ));
865+
866+ TEST_ASSERT (pathname_init (& pathname , "/home/user/fi?le" ) == ERR );
867+ TEST_ASSERT (errno == EINVAL );
868+
869+ TEST_ASSERT (pathname_init (& pathname , "/home:invalid" ) == ERR );
870+ TEST_ASSERT (errno == EINVAL );
871+
872+ TEST_ASSERT (pathname_init (& pathname , "" ) == 0 );
873+ TEST_ASSERT (strcmp (pathname .string , "" ) == 0 );
874+
875+ TEST_ASSERT (pathname_init (& pathname , ":read" ) == 0 );
876+ TEST_ASSERT (strcmp (pathname .string , "" ) == 0 );
877+ TEST_ASSERT (pathname .mode == MODE_READ );
878+
879+ return 0 ;
880+ }
881+
882+ #endif
0 commit comments