ReactOS 0.4.16-dev-295-g4aee028
y.c
Go to the documentation of this file.
1/*
2 * Y.C - Y external command.
3 *
4 * clone from 4nt y command
5 *
6 * 02 Oct 1999 (Paolo Pantaleo)
7 * started
8 *
9 *
10 */
11
12#define BUFF_SIZE 4096
13
14#include <windows.h>
15#include <stdio.h>
16#include <tchar.h>
17
18static
19VOID ConErrPrintf (LPTSTR szFormat, ...)
20{
21 DWORD dwWritten;
22 TCHAR szOut[BUFF_SIZE];
23 va_list arg_ptr;
24
25 va_start (arg_ptr, szFormat);
26 _vstprintf (szOut, szFormat, arg_ptr);
27 va_end (arg_ptr);
28
29 WriteFile (GetStdHandle (STD_ERROR_HANDLE), szOut, _tcslen(szOut), &dwWritten, NULL);
30}
31
32
33static
35{
36 DWORD dwWritten;
37
38 WriteFile (GetStdHandle (STD_OUTPUT_HANDLE), szText, _tcslen(szText), &dwWritten, NULL);
39 WriteFile (GetStdHandle (STD_OUTPUT_HANDLE), "\n", 1, &dwWritten, NULL);
40}
41
42
43int main (int argc, char **argv)
44{
45 INT i;
46 HANDLE hFind;
47 HANDLE hConsoleIn, hConsoleOut, hFile;
48 char buff[BUFF_SIZE];
49 DWORD dwRead,dwWritten;
50 BOOL bRet;
51 WIN32_FIND_DATA FindData;
52
53 hConsoleIn = GetStdHandle(STD_INPUT_HANDLE);
54 hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE);
55
56 if (argc == 2 && _tcsncmp (argv[1], _T("/?"), 2) == 0)
57 {
58 ConOutPuts(_T("copy stdin to stdout and then files to stdout\n"
59 "\n"
60 "Y [files]\n"
61 "\n"
62 "files files to copy to stdout"));
63 return 0;
64 }
65
66 /*stdin to stdout*/
67 do
68 {
69 bRet = ReadFile(hConsoleIn,buff,sizeof(buff),&dwRead,NULL);
70
71 if (dwRead>0 && bRet)
72 WriteFile(hConsoleOut,buff,dwRead,&dwWritten,NULL);
73
74 } while(dwRead>0 && bRet);
75
76
77 /*files to stdout*/
78 Sleep(0);
79
80 for (i = 1; i < argc; i++)
81 {
82 hFind=FindFirstFile(argv[i],&FindData);
83
84 if (hFind==INVALID_HANDLE_VALUE)
85 {
86 ConErrPrintf("File not found - %s\n",argv[i]);
87 continue;
88 }
89
90 do
91 {
92 hFile = CreateFile(FindData.cFileName,
97
99 {
100 ConErrPrintf("File not found - %s\n",FindData.cFileName);
101 continue;
102 }
103
104 do
105 {
106 bRet = ReadFile(hFile,buff,sizeof(buff),&dwRead,NULL);
107
108 if (dwRead>0 && bRet)
109 WriteFile(hConsoleOut,buff,dwRead,&dwWritten,NULL);
110
111 } while(dwRead>0 && bRet);
112
114
115 }
116 while(FindNextFile(hFind,&FindData));
117
118 FindClose(hFind);
119 }
120
121 return 0;
122}
static int argc
Definition: ServiceArgs.c:12
char * va_list
Definition: acmsvcex.h:78
#define va_end(ap)
Definition: acmsvcex.h:90
#define va_start(ap, A)
Definition: acmsvcex.h:91
HANDLE WINAPI GetStdHandle(IN DWORD nStdHandle)
Definition: console.c:203
#define ConErrPrintf(szStr,...)
Definition: console.h:44
#define ConOutPuts(szStr)
Definition: console.h:29
#define NULL
Definition: types.h:112
#define CloseHandle
Definition: compat.h:739
#define OPEN_EXISTING
Definition: compat.h:775
#define ReadFile(a, b, c, d, e)
Definition: compat.h:742
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
#define GENERIC_READ
Definition: compat.h:135
#define FILE_ATTRIBUTE_NORMAL
Definition: compat.h:137
#define FILE_SHARE_READ
Definition: compat.h:136
BOOL WINAPI FindClose(HANDLE hFindFile)
Definition: find.c:502
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
Definition: rw.c:24
int main()
Definition: test.c:6
static unsigned char buff[32768]
Definition: fatten.c:17
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define _vstprintf
Definition: tchar.h:540
#define _tcsncmp
Definition: tchar.h:1428
#define argv
Definition: mplay32.c:18
_In_ HANDLE hFile
Definition: mswsock.h:90
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
Definition: synch.c:790
int32_t INT
Definition: typedefs.h:58
#define _T(x)
Definition: vfdio.h:22
#define STD_OUTPUT_HANDLE
Definition: winbase.h:294
#define STD_INPUT_HANDLE
Definition: winbase.h:293
#define STD_ERROR_HANDLE
Definition: winbase.h:295
#define FindNextFile
Definition: winbase.h:3813
#define FindFirstFile
Definition: winbase.h:3807
#define CreateFile
Definition: winbase.h:3774
char TCHAR
Definition: xmlstorage.h:189
CHAR * LPTSTR
Definition: xmlstorage.h:192
#define _tcslen
Definition: xmlstorage.h:198
#define BUFF_SIZE
Definition: y.c:12