Reactos
1/*
2 * FILE : lsdd.c
3 * AUTHOR: Emanuele ALIBERTI
4 * DATE : 2000-08-04
5 * DESC : List DOS devices, i.e. symbolic links created
6 * in the \?? object manager's name space.
7 */
8#include <stdio.h>
9#include <stdlib.h>
10#include <stdarg.h>
11
12#include <windef.h>
13#include <winbase.h>
14
15
16#include <reactos/buildno.h>
17
18#include "../win32err.h"
19
20#define LINKS_SIZE 32768
21#define DEVICE_SIZE 8192
22
23static const LPWSTR error_prefix = L"lsdd: ";
24
25static char SymbolicLinks [LINKS_SIZE];
26static char DosDeviceName [DEVICE_SIZE];
27
28static char DeviceNames [DEVICE_SIZE];
29static char DeviceName [DEVICE_SIZE];
30
31
32BOOL
33WINAPI
34GetNextString (
35 char * BufferIn,
36 char * BufferOut,
37 char ** Next
38 )
39{
40 char * next = *Next;
41 char * w;
42
43 if ('\0' == *next) return FALSE;
44 for ( w = BufferOut;
45 ('\0' != *next);
46 next ++
47 )
48 {
49 *(w ++) = *next;
50 }
51 *w = '\0';
52 *Next = ++ next;
53 return TRUE;
54}
55
56
57int
58main (int argc, char * argv [] )
59{
60 printf (
61 "ReactOS/Win32 %s - List DOS Devices Utility\n"
62 "Written by E.Aliberti (%s)\n\n",
63 KERNEL_VERSION_STR,
64 __DATE__
65 );
66
67 if (0 != QueryDosDevice (
68 NULL, /* dump full directory */
69 SymbolicLinks,
70 sizeof SymbolicLinks
71 )
72 )
73 {
74 char * NextDosDevice = SymbolicLinks;
75 char * NextDevice;
76
77 while (TRUE == GetNextString (
78 SymbolicLinks,
79 DosDeviceName,
80 & NextDosDevice
81 )
82 )
83 {
84 printf ("%s\n", DosDeviceName);
85 if (0 != QueryDosDevice (
86 DosDeviceName,
87 DeviceNames,
88 sizeof DeviceNames
89 )
90 )
91 {
92 NextDevice = DeviceNames;
93 while (TRUE == GetNextString (
94 DeviceNames,
95 DeviceName,
96 & NextDevice
97 )
98 )
99 {
100 printf (" -> \"%s\"\n", DeviceName);
101 }
102 }
103 else
104 {
105 PrintWin32Error (
106 error_prefix,
107 GetLastError ()
108 );
109 }
110 printf ("\n");
111 }
112 }
113 else
114 {
115 PrintWin32Error (
116 error_prefix,
117 GetLastError ()
118 );
119 return EXIT_FAILURE;
120 }
121 return EXIT_SUCCESS;
122}
123
124
125/* EOF */