@@ -2554,40 +2554,19 @@ int true_name(char *path, size_t pathsize)
25542554
25552555void conc_dir_and_name (char * dir , char * name , char * fname , size_t fname_size )
25562556{
2557- char * lf_cp1 , * lf_cp2 ;
2557+ size_t current_len ;
25582558
2559- lf_cp1 = dir ;
2560- lf_cp2 = dir ;
2559+ /* Start with the directory */
2560+ strlcpy (fname , dir , fname_size );
2561+ current_len = strlen (fname );
25612562
2562- while (* lf_cp2 != '\0' ) {
2563- switch (* lf_cp2 ) {
2564-
2565- case '/' :
2566- lf_cp1 = lf_cp2 ;
2567- lf_cp2 ++ ;
2568- break ;
2569-
2570- default :
2571- lf_cp2 ++ ;
2572- break ;
2573- }
2574- }
2575- if (lf_cp1 == (lf_cp2 - 1 )) {
2576- if (lf_cp1 == (dir )) {
2577- /* dir is a root directory. */
2578- strlcpy (fname , "/" , fname_size );
2579- strlcat (fname , name , fname_size );
2580- } else {
2581- /* The trail directory is included. */
2582- strlcpy (fname , dir , fname_size );
2583- strlcat (fname , name , fname_size );
2584- }
2585- } else {
2586- /* The trail directory is not included */
2587- strlcpy (fname , dir , fname_size );
2563+ /* Ensure the directory has a final slash */
2564+ if ((current_len == 0 ) || (current_len > 0 && fname [current_len - 1 ] != '/' )) {
25882565 strlcat (fname , "/" , fname_size );
2589- strlcat (fname , name , fname_size );
25902566 }
2567+
2568+ /* Append the name as given */
2569+ strlcat (fname , name , fname_size );
25912570}
25922571
25932572/*
0 commit comments