ReactOS 0.4.15-dev-8231-g29a56f3
util.c File Reference
#include <errno.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "config.h"
#include "compat.h"
#include "util.h"
#include "options.h"
Include dependency graph for util.c:

Go to the source code of this file.

Functions

int set_LogFile (FILE **plogFile)
 
int file_exists (char *name)
 
int mkPath (char *path, int isDir)
 
charbasename (char *path)
 
const chargetFmt (const char *a)
 
long my_atoi (const char *a)
 
int isOffset (const char *a)
 
int copy_file (char *src, char *dst)
 

Function Documentation

◆ basename()

char * basename ( char path)

Definition at line 110 of file util.c.

111{
112 char *base;
113
115 if (base)
116 return ++base;
117 return path;
118}
#define PATH_CHAR
Definition: rmkdir.c:17
_Check_return_ _CRTIMP _CONST_RETURN char *__cdecl strrchr(_In_z_ const char *_Str, _In_ int _Ch)

◆ copy_file()

int copy_file ( char src,
char dst 
)

Definition at line 163 of file util.c.

164{
165 char Line[LINESIZE];
166
168 l2l_dbg(2, "Executing: %s\n", Line);
169 remove(dst);
170 if (file_exists(dst))
171 {
172 l2l_dbg(0, "Cannot remove dst %s before copy\n", dst);
173 return 1;
174 }
175 if (system(Line) < 0)
176 {
177 l2l_dbg(0, "Cannot copy %s to %s\n", src, dst);
178 l2l_dbg(1, "Failed to execute: '%s'\n", Line);
179 return 2;
180 }
181
182 if (!file_exists(dst))
183 {
184 l2l_dbg(0, "Dst %s does not exist after copy\n", dst);
185 return 2;
186 }
187 return 0;
188}
#define LINESIZE
Definition: chargen.c:18
GLenum src
Definition: glext.h:6340
GLenum GLenum dst
Definition: glext.h:6340
#define sprintf(buf, format,...)
Definition: sprintf.c:55
int remove
Definition: msacm.c:1366
int __cdecl system(_In_opt_z_ const char *_Command)
#define CP_FMT
Definition: config.h:16
int file_exists(char *name)
Definition: util.c:52
#define l2l_dbg(level,...)
Definition: util.h:35
Definition: ncftp.h:79

◆ file_exists()

int file_exists ( char name)

Definition at line 52 of file util.c.

53{
54 FILE *f;
55
56 f = fopen(name, "r");
57 if (!f)
58 return 0;
59 fclose(f);
60 return 1;
61}
GLfloat f
Definition: glext.h:7540
_Check_return_ _CRTIMP FILE *__cdecl fopen(_In_z_ const char *_Filename, _In_z_ const char *_Mode)
_Check_return_opt_ _CRTIMP int __cdecl fclose(_Inout_ FILE *_File)
#define f
Definition: ke_i.h:83
Definition: name.c:39

Referenced by copy_file().

◆ getFmt()

const char * getFmt ( const char a)

Definition at line 121 of file util.c.

122{
123 const char *fmt = "%x";
124
125 if (*a == '0')
126 {
127 switch (*++a)
128 {
129 case 'x':
130 fmt = "%x";
131 ++a;
132 break;
133 case 'd':
134 fmt = "%d";
135 ++a;
136 break;
137 default:
138 fmt = "%o";
139 break;
140 }
141 }
142 return fmt;
143}
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204
#define a
Definition: ke_i.h:78
Definition: dsound.c:943

Referenced by isOffset(), and my_atoi().

◆ isOffset()

int isOffset ( const char a)

Definition at line 154 of file util.c.

155{
156 int i = 0;
157 if (strchr(a, '.'))
158 return 0;
159 return sscanf(a, getFmt(a), &i);
160}
char * strchr(const char *String, int ch)
Definition: utclib.c:501
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
_Check_return_ _CRTIMP int __cdecl sscanf(_In_z_ const char *_Src, _In_z_ _Scanf_format_string_ const char *_Format,...)
const char * getFmt(const char *a)
Definition: util.c:121

Referenced by main().

◆ mkPath()

int mkPath ( char path,
int  isDir 
)

Definition at line 68 of file util.c.

69{
70 char *s;
71 int res = 0;
72
73 if (isDir)
74 {
75 res = MKDIR(path);
76 if (!res || (res == -1 && errno == EEXIST))
77 return 0;
78 }
79 // create parent dir
80 if ((s = strrchr(path, PATH_CHAR)))
81 {
82 *s = '\0';
83 res = mkPath(path, 1);
84 *s = PATH_CHAR;
85 }
86
87 if (!res && isDir)
88 res = MKDIR(path);
89
90 return res;
91}
#define EEXIST
Definition: acclib.h:88
GLdouble s
Definition: gl.h:2039
GLuint res
Definition: glext.h:9613
#define errno
Definition: errno.h:18
#define MKDIR(d)
Definition: compat.h:27
int mkPath(char *path, int isDir)
Definition: util.c:68

Referenced by mkPath().

◆ my_atoi()

long my_atoi ( const char a)

Definition at line 146 of file util.c.

147{
148 int i = 0;
149 sscanf(a, getFmt(a), &i);
150 return i;
151}

◆ set_LogFile()

int set_LogFile ( FILE **  plogFile)

Definition at line 19 of file util.c.

20{
21 if (*opt_logFile)
22 {
23 if (*plogFile)
24 fclose(*plogFile);
25 *plogFile = NULL;
26
27 if (strcmp(opt_logFile,"none") == 0)
28 return 0; //just close
29
30 *plogFile = fopen(opt_logFile, opt_mod ? opt_mod : "a");
31 if (*plogFile)
32 {
33 // disable buffering so fflush is not needed
34 if (!opt_buffered)
35 {
36 l2l_dbg(1, "Disabling log buffering on %s\n", opt_logFile);
37 setbuf(*plogFile, NULL);
38 }
39 else
40 l2l_dbg(1, "Enabling log buffering on %s\n", opt_logFile);
41 }
42 else
43 {
44 l2l_dbg(0, "Could not open logfile %s (%s)\n", opt_logFile, strerror(errno));
45 return 2;
46 }
47 }
48 return 0;
49}
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469
#define NULL
Definition: types.h:112
_CRTIMP void __cdecl setbuf(_Inout_ FILE *_File, _Inout_updates_opt_(BUFSIZ) _Post_readable_size_(0) char *_Buffer)
const char * strerror(int err)
Definition: compat_str.c:23
char * opt_mod
Definition: options.c:42
int opt_buffered
Definition: options.c:21
char opt_logFile[PATH_MAX]
Definition: options.c:41

Referenced by handle_escape_cmd(), and main().