mirror of
https://github.com/roswell/roswell.git
synced 2026-09-10 07:16:17 -04:00
171 lines
4.4 KiB
C
171 lines
4.4 KiB
C
/* -*- tab-width : 2 -*- */
|
|
#ifndef __UTIL_H__
|
|
#define __UTIL_H__
|
|
#ifdef HAVE_CONFIG_H
|
|
# include "config.h"
|
|
#endif
|
|
#ifndef PACKAGE
|
|
#define PACKAGE "roswell"
|
|
#endif
|
|
#include <sys/stat.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <stdint.h>
|
|
#include <string.h>
|
|
#include <stdarg.h>
|
|
#ifndef HAVE_WINDOWS_H
|
|
#include <pwd.h>
|
|
#include <unistd.h>
|
|
#include <signal.h>
|
|
#include <dirent.h>
|
|
#include <sys/types.h>
|
|
#include <sys/wait.h>
|
|
#define SLASH "/"
|
|
#define PATHSEP ":"
|
|
#define EXE_EXTENTION ""
|
|
#define ROSRC "/etc/rosrc"
|
|
#else
|
|
#include <windows.h>
|
|
#include <shellapi.h>
|
|
#include <shlobj.h>
|
|
#include <wininet.h>
|
|
#include <direct.h>
|
|
typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
|
|
#define SLASH "\\"
|
|
#define PATHSEP ";"
|
|
#define EXE_EXTENTION ".exe"
|
|
#define ROSRC ""
|
|
int setenv(const char* name,const char* value,int overwrite);
|
|
int unsetenv(const char* name);
|
|
#endif
|
|
#ifdef HAVE_CURL_CURL_H
|
|
#include <curl/curl.h>
|
|
#endif
|
|
|
|
extern char** argv_orig;
|
|
extern int argc_orig;
|
|
extern int verbose;
|
|
extern int testing;
|
|
|
|
int download_simple (char* uri,char* path,int opt);
|
|
|
|
typedef intptr_t LVal;
|
|
struct Cons {
|
|
LVal val;
|
|
int type;
|
|
LVal next;
|
|
};
|
|
|
|
#ifdef __APPLE__
|
|
#ifndef st_mtime
|
|
#define st_mtime st_mtimespec.tv_sec
|
|
#endif
|
|
#endif
|
|
|
|
typedef LVal (*Function1)(LVal v);
|
|
typedef LVal (*Function2)(LVal v1,LVal v2);
|
|
typedef LVal (*Compare2)(LVal v1,LVal v2);
|
|
|
|
#define toPointer(v) ((void*)(((intptr_t)v)&~3))
|
|
#define NumberP(v) (((v)&3)==1)
|
|
#define toNumber(v) (((v)<<2)+1)
|
|
#define Number(v) (((v)>>2))
|
|
#define StringP(v) (((v)&3)==2)
|
|
#define toString(v) ((char*)(((intptr_t)v)&~3))
|
|
#define ListP(v) (((v)&3)==3)
|
|
#define toList(v) ((struct Cons*)(((intptr_t)v)&~3))
|
|
#define V(v) ((LVal)(v))
|
|
#define Next(v) ((LVal)(((struct Cons*)toPointer(v))->next))
|
|
#define s(v) (s_internal(v,#v,__FILE__,__LINE__))
|
|
#define q(v) (q_internal(v,__FILE__,__LINE__))
|
|
|
|
LVal consi(int v,LVal l);
|
|
LVal conss(char* v,LVal l);
|
|
LVal cons(void* v,LVal l);
|
|
LVal nreverse(LVal l);
|
|
LVal remove_if_not1(Function1 f,LVal v);
|
|
LVal mapcar1(Function1 f,LVal v);
|
|
|
|
LVal string_equal(LVal v1,LVal v2);
|
|
LVal find(LVal v,LVal l,Compare2 c);
|
|
|
|
int firsti(LVal l);
|
|
char* firsts(LVal l);
|
|
void* firstp(LVal l);
|
|
LVal first(LVal v);
|
|
LVal rest(LVal v);
|
|
LVal nrest(LVal v);
|
|
LVal nthcdr(int n,LVal v);
|
|
LVal nnthcdr(int n,LVal v);
|
|
int length(LVal l);
|
|
|
|
void print_list(LVal v);
|
|
LVal split_string(char* string,char* by);
|
|
void sL(LVal l);
|
|
LVal stringlist(char* first,...);
|
|
char** stringlist_array(LVal v);
|
|
LVal array_stringlist(int argc,char** argv);
|
|
|
|
void cond_printf (int v,char* format,...);
|
|
void* alloc(size_t bytes);
|
|
void dealloc(void* f);
|
|
char* q_(const char* orig);
|
|
char* q_internal(const char* orig,char* file,int line);
|
|
char* qsprintf(int bufsize,char* format,...);
|
|
void s_internal(char* f,char* name,char* file,int line);
|
|
char* s_cat2(char* a,char* b);
|
|
char* s_cat(char* first,...);
|
|
char* cat(char* first,...);
|
|
char* subseq(char* base,int beg,int end);
|
|
char* remove_char(char* items,char* orig);
|
|
int position_char(char* items,char* seq);
|
|
int position_char_not(char* items,char* seq);
|
|
char* substitute_char(char new,char old,char* seq);
|
|
char* upcase(char* orig);
|
|
char* downcase(char* orig);
|
|
char* append_trail_slash(char* str);
|
|
char* escape_string(char* str);
|
|
char* s_escape_string(char* str);
|
|
char* lispdir(void);
|
|
/*util_dir.c */
|
|
char* currentdir(void);
|
|
char* configdir(void);
|
|
char* subcmddir(void);
|
|
char* truename(const char* path);
|
|
char* pathname_directory (char* path);
|
|
char* file_namestring (char* path);
|
|
int ensure_directories_exist (char* path);
|
|
int directory_exist_p (char* path);
|
|
int change_directory(const char* path);
|
|
int delete_directory(char* pathspec,int recursive);
|
|
char* impldir(char* arch,char* os,char* impl,char* version);
|
|
/*util_file.c */
|
|
int delete_file(char* pathspec);
|
|
int rename_file(char* file,char* new_name);
|
|
void touch(char* path);
|
|
int file_exist_p (char* path);
|
|
long file_mtime(char* path);
|
|
int file_newer_p(char * a,char* b);
|
|
/*util_system.c */
|
|
char* system_(char* cmd);
|
|
int system_redirect(const char* cmd,char* filename);
|
|
int System(const char* command);
|
|
void exec_arg(char** arg);
|
|
|
|
char* backslash_decode(char* str);
|
|
char** parse_cmdline(char* cmdline,int *argc);
|
|
int free_cmdline(char** argv);
|
|
char* determin_impl(char* impl);
|
|
char* uname(void);
|
|
char* uname_m(void);
|
|
char* which(char* cmd);
|
|
LVal directory(char* path);
|
|
void delete_at_exit(char* file_to_delete);
|
|
void setup_uid(int euid_or_uid);
|
|
int mklockdir(char* path);
|
|
int lock_apply(char* symbol,int remove);
|
|
|
|
char* sbcl_bin(char* file,int nth);
|
|
char* ccl_binname(char* bit);
|
|
#endif
|