ReactOS  0.4.14-dev-833-g5f692ed
lsdd.c
Go to the documentation of this file.
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 
23 static const LPWSTR error_prefix = L"lsdd: ";
24 
25 static char SymbolicLinks [LINKS_SIZE];
26 static char DosDeviceName [DEVICE_SIZE];
27 
28 static char DeviceNames [DEVICE_SIZE];
29 static char DeviceName [DEVICE_SIZE];
30 
31 
32 BOOL
33 WINAPI
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 
57 int
58 main (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 */
70  sizeof SymbolicLinks
71  )
72  )
73  {
74  char * NextDosDevice = SymbolicLinks;
75  char * NextDevice;
76 
77  while (TRUE == GetNextString (
80  & NextDosDevice
81  )
82  )
83  {
84  printf ("%s\n", DosDeviceName);
85  if (0 != QueryDosDevice (
88  sizeof DeviceNames
89  )
90  )
91  {
92  NextDevice = DeviceNames;
93  while (TRUE == GetNextString (
95  DeviceName,
96  & NextDevice
97  )
98  )
99  {
100  printf (" -> \"%s\"\n", DeviceName);
101  }
102  }
103  else
104  {
106  error_prefix,
107  GetLastError ()
108  );
109  }
110  printf ("\n");
111  }
112  }
113  else
114  {
116  error_prefix,
117  GetLastError ()
118  );
119  return EXIT_FAILURE;
120  }
121  return EXIT_SUCCESS;
122 }
123 
124 
125 /* EOF */
#define QueryDosDevice
Definition: winbase.h:3726
static int argc
Definition: ServiceArgs.c:12
#define TRUE
Definition: types.h:120
#define LINKS_SIZE
Definition: lsdd.c:20
BOOL WINAPI GetNextString(char *BufferIn, char *BufferOut, char **Next)
Definition: lsdd.c:34
GLubyte GLubyte GLubyte GLubyte w
Definition: glext.h:6102
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1059
#define argv
Definition: mplay32.c:18
static char SymbolicLinks[LINKS_SIZE]
Definition: lsdd.c:25
#define EXIT_SUCCESS
Definition: rdjpgcom.c:55
static char DeviceName[DEVICE_SIZE]
Definition: lsdd.c:29
unsigned int BOOL
Definition: ntddk_ex.h:94
VOID PrintWin32Error(IN LPWSTR Message, IN DWORD ErrorCode)
Definition: main.c:146
static char DeviceNames[DEVICE_SIZE]
Definition: lsdd.c:28
static const LPWSTR error_prefix
Definition: lsdd.c:23
smooth NULL
Definition: ftsmooth.c:416
#define DEVICE_SIZE
Definition: lsdd.c:21
#define WINAPI
Definition: msvc.h:6
#define EXIT_FAILURE
Definition: jerror.c:33
static char DosDeviceName[DEVICE_SIZE]
Definition: lsdd.c:26
static const WCHAR L[]
Definition: oid.c:1250
static unsigned __int64 next
Definition: rand_nt.c:6
int main(int argc, char *argv [])
Definition: lsdd.c:58
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define printf
Definition: config.h:203