xref: /reactos/sdk/lib/crt/stdlib/wmakpath.c (revision 84ccccab)
1 /*
2  * PROJECT:     ReactOS CRT library
3  * LICENSE:     See COPYING in the top level directory
4  * FILE:        lib/sdk/crt/stdlib/wmakpath.c
5  * PURPOSE:     Creates a unicode path
6  * PROGRAMMERS: Wine team
7  *              Copyright 1996,1998 Marcus Meissner
8  *              Copyright 1996 Jukka Iivonen
9  *              Copyright 1997,2000 Uwe Bonnes
10  *              Copyright 2000 Jon Griffiths
11  *
12  */
13 
14 #include <precomp.h>
15 
16 /*
17  * @implemented
18  */
19 void _wmakepath(wchar_t* path, const wchar_t* drive, const wchar_t* dir, const wchar_t* fname, const wchar_t* ext)
20 {
21     wchar_t *p = path;
22 
23     if ( !path )
24         return;
25 
26     if (drive && drive[0])
27     {
28         *p++ = drive[0];
29         *p++ = ':';
30     }
31     if (dir && dir[0])
32     {
33         size_t len = strlenW(dir);
34         memmove(p, dir, len * sizeof(wchar_t));
35         p += len;
36         if (p[-1] != '/' && p[-1] != '\\')
37             *p++ = '\\';
38     }
39     if (fname && fname[0])
40     {
41         size_t len = strlenW(fname);
42         memmove(p, fname, len * sizeof(wchar_t));
43         p += len;
44     }
45     if (ext && ext[0])
46     {
47         if (ext[0] != '.')
48             *p++ = '.';
49         strcpyW(p, ext);
50     }
51     else
52         *p = '\0';
53 }
54