51# define DEV_NULL "NUL:"
53# define DEV_NULL "/dev/null"
58warn (
const char*
const format, ...)
71 vfprintf (
stderr, format, args);
76terminate (
const int state,
const char*
const format, ...)
90 vfprintf (
stderr, format, args);
107 terminate (1,
"malloc (%lu) at line %u of %s failed: %s\n",
108 (
unsigned long)
size,
line, file, strerror (errno));
125 terminate (1,
"malloc(%lu) at line %u of %s failed: %s\n",
126 (
unsigned long)
size,
line, file, strerror (errno));
134 size_t root_len, cmp_len, dir_len, mode_len, net_len;
137 const char*
const target_name =
get_target ();
139 assert (0 != target_name);
143 root_len = data_dir ? strlen (data_dir) : 0;
145 dir_len = strlen (subdir);
146 mode_len = strlen (
mode);
147 net_len = root_len + cmp_len + dir_len + mode_len * 2 + 5;
150 tail = ref_name = (
char*)
RW_MALLOC (net_len);
152 memcpy (tail, data_dir, root_len);
155 memcpy (tail , subdir, dir_len);
158 memcpy (tail ,
mode, mode_len);
161 memcpy (tail , target_name, cmp_len);
164 memcpy (tail ,
mode, mode_len);
198 if (data_dir && *data_dir) {
202 stat_result = stat (fname, &
sb);
204 if (0 == stat_result)
211 stat_result = stat (fname, &
sb);
213 if (0 == stat_result)
229 const char* suffix =
"out";
230 const size_t sfx_len = strlen (suffix);
232 char*
const tmp_name = (
char*)
RW_MALLOC (exe_len + sfx_len + 2);
234 memcpy (tmp_name, target, exe_len);
236 memcpy (tmp_name + exe_len + 1, suffix, sfx_len + 1);
250# ifndef _RWSTD_EDG_ECCP
261 struct sigaction act;
262 memset (&act, 0,
sizeof act);
267 memcpy (&act.sa_handler, &
func,
sizeof func);
271 return 0 > sigaction (signo, &act, 0);
305 Sleep (seconds * 1000);
IMPORT_C UInt32 sleep(UInt32 seconds)
#define va_start(va, name)
const char * get_target()
const size_t exe_suffix_len
const char default_path_sep
char * input_name(const char *data_dir, const char *target)
char * reference_name(const char *data_dir, const char *subdir, const char *mode)
void * guarded_realloc(void *source, const size_t size, const char *const file, const unsigned line)
char * output_name(const char *target)
void * guarded_malloc(const size_t size, const char *const file, const unsigned line)
void warn(const char *const format,...)
int rw_signal(int signo, void(*func)(int))
void rw_sleep(int seconds)