36 #ifdef INCLUDE_CMD_COPY 74 TRACE (
"checking mode\n");
114 TRACE (
"getting time\n");
118 TRACE (
"copy: flags has %s\n",
160 TRACE (
"opening/creating\n");
176 LONG lFilePosHigh = 0;
184 TRACE (
"opening/appending\n");
245 TRACE (
"setting time\n");
252 TRACE (
"appending ^Z\n");
260 TRACE (
"setting mode\n");
302 while (*pszTarget != 0)
304 if (*pszTarget ==
_T(
'*'))
307 while ((*pszSource != 0) && (*pszSource != *pszTarget))
309 *pszOutput++ = *pszSource++;
312 else if (*pszTarget ==
_T(
'?'))
317 *pszOutput++ = *pszSource++;
322 *pszOutput++ = *pszTarget++;
334 INT argc,
i, nFiles, nOverwrite = 0, nSrc = -1, nDes = -1;
345 TCHAR * appendPointer =
_T(
"\0");
380 TCHAR *old_evar = evar;
517 else if (*
arg[
i] ==
_T(
'+'))
579 bMultipleSource =
TRUE;
595 if ((
arg[nDes][1] ==
_T(
':')) && (
arg[nDes][2] ==
_T(
'\0')))
609 bMultipleDest =
TRUE;
610 if (szDestPath[
_tcslen(szDestPath) - 1] !=
_T(
'\\'))
618 bMultipleDest =
TRUE;
624 if (bMultipleSource && !bMultipleDest)
630 appendPointer =
arg[nSrc];
639 *UseThisName++ =
_T(
'\0');
642 if (((UseThisName[0] ==
_T(
'*')) && (UseThisName[1] ==
_T(
'\0'))) ||
643 (UseThisName[0] ==
_T(
'\0')))
654 UseThisName = szDestPath;
663 szSrcPath[0] =
_T(
'\0');
669 if (appendPointer[0] ==
_T(
'|'))
675 else if (appendPointer[0] ==
_T(
'\0'))
681 _tcsncat(szSrcPath, appendPointer, 1);
691 if (
_tcsncmp(szTouch,
_T(
"|,,\0"), 4) || (nDes != -1))
709 if ((szSrcPath[1] ==
_T(
':')) && (szSrcPath[2] ==
_T(
'\0')))
730 if (szSrcPath[
_tcslen(szSrcPath) - 1] !=
_T(
'\\'))
737 if (szSrcPath[
_tcslen(szSrcPath) - 1] ==
_T(
'\\'))
760 for (
i = (
_tcslen(szSrcPath) - 1);
i > -1;
i--)
762 if (szSrcPath[
i] !=
_T(
'\\'))
763 szSrcPath[
i] =
_T(
'\0');
782 if (!
_tcscmp(findBuffer.cFileName,
_T(
".")) ||
783 !
_tcscmp(findBuffer.cFileName,
_T(
"..")) ||
790 _tcscpy(tmpDestPath, szDestPath);
794 if (
_tcscmp(tmpDestPath,
_T(
"\\\\.\\")) &&
806 _tcscat(tmpDestPath, findBuffer.cFileName);
813 _tcscat(tmpDestPath, UseThisName);
825 _tcscat(tmpDestPath, DoneFile);
831 _tcscat (tmpSrcPath, findBuffer.cFileName);
834 if (!bTouch && !
_tcscmp(tmpSrcPath, tmpDestPath))
855 if (
copy(tmpSrcPath,tmpDestPath, bAppend,
dwFlags, bTouch))
#define STRING_COPY_ERROR2
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
#define ConOutFormatMessage(MessageId,...)
static GLenum _GLUfuncptr fn
int _tcscmp(const _TCHAR *s1, const _TCHAR *s2)
BOOL IsExistingFile(IN LPCTSTR pszPath)
#define INVALID_HANDLE_VALUE
_TCHAR * _tcscpy(_TCHAR *to, const _TCHAR *from)
DWORD WINAPI GetLastError(VOID)
#define STRING_ERROR_REQ_PARAM_MISSING
#define ConOutPrintf(szStr,...)
VOID ConOutResPaging(BOOL StartPaging, UINT resID)
static void append(struct dump_context *dc, const void *data, unsigned size)
#define COPY_FILE_RESTARTABLE
BOOL WINAPI SetFileTime(IN HANDLE hFile, CONST FILETIME *lpCreationTime OPTIONAL, CONST FILETIME *lpLastAccessTime OPTIONAL, CONST FILETIME *lpLastWriteTime OPTIONAL)
LPVOID NTAPI VirtualAlloc(IN LPVOID lpAddress, IN SIZE_T dwSize, IN DWORD flAllocationType, IN DWORD flProtect)
#define ConErrResPrintf(uID,...)
GLenum GLuint GLenum GLsizei length
#define GetCurrentDirectory
#define STRING_ERROR_INVALID_PARAM_FORMAT
static INT CopyOverwrite(LPTSTR fn)
size_t __cdecl _tcslen(const _TCHAR *str)
static VOID freep(LPSTR *p)
#define ERROR_FILE_NOT_FOUND
_TCHAR * _tcschr(const _TCHAR *s, _XINT c)
#define STRING_ERROR_OUT_OF_MEMORY
#define FILE_ATTRIBUTE_DIRECTORY
#define STRING_COPY_ERROR1
VOID WINAPI GetSystemTime(OUT LPSYSTEMTIME lpSystemTime)
_TCHAR * _tcsncat(_TCHAR *dst, const _TCHAR *src, size_t n)
#define SetFileAttributes
static LPSTR * split(LPSTR s, LPINT args)
#define ConOutResPrintf(uID,...)
static void BuildFileName(LPTSTR pszSource, LPTSTR pszTarget, LPTSTR pszOutput)
#define cmd_realloc(ptr, size)
#define FILE_ATTRIBUTE_NORMAL
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define COPY_FILE_ALLOW_DECRYPTED_DESTINATION
#define STRING_ERROR_PATH_NOT_FOUND
#define GetFileAttributes
INT GetRootPath(IN LPCTSTR InPath, OUT LPTSTR OutPath, IN INT size)
struct _FileName FileName
BOOL WINAPI SystemTimeToFileTime(IN CONST SYSTEMTIME *lpSystemTime, OUT LPFILETIME lpFileTime)
#define STRING_ERROR_INVALID_SWITCH
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
IN OUT PVCB OUT PDIRENT OUT PBCB IN BOOLEAN CreateFile
INT copy(TCHAR source[MAX_PATH], TCHAR dest[MAX_PATH], INT append, DWORD lpdwFlags, BOOL bTouch)
#define ReadFile(a, b, c, d, e)
#define STRING_COPY_HELP1
#define STRING_ERROR_TOO_MANY_PARAMETERS
#define ConOutResPuts(uID)
#define STRING_COPY_HELP2
_TCHAR * _tcsrchr(const _TCHAR *s, _XINT c)
_TCHAR * _tcscat(_TCHAR *s, const _TCHAR *append)
INT cmd_copy(LPTSTR param)
#define GetEnvironmentVariable
BOOL NTAPI VirtualFree(IN LPVOID lpAddress, IN SIZE_T dwSize, IN DWORD dwFreeType)
#define STRING_COPY_ERROR3
BOOL WINAPI GetFileTime(IN HANDLE hFile, OUT LPFILETIME lpCreationTime OPTIONAL, OUT LPFILETIME lpLastAccessTime OPTIONAL, OUT LPFILETIME lpLastWriteTime OPTIONAL)
int _tcsncmp(const _TCHAR *s1, const _TCHAR *s2, size_t n)
BOOL IsExistingDirectory(IN LPCTSTR pszPath)
BOOL WINAPI FindClose(HANDLE hFindFile)