mirror of
https://github.com/Harshit-Dhanwalkar/AsciiCam.git
synced 2026-07-06 11:22:10 +02:00
Add macos support
This commit is contained in:
parent
49b58febba
commit
14cc7dcc2e
10 changed files with 616 additions and 250 deletions
|
|
@ -6,11 +6,15 @@
|
|||
inotify
|
||||
*/
|
||||
|
||||
#include <termios.h>
|
||||
#include <time.h>
|
||||
|
||||
#ifdef __LINUX_NOLIBC__
|
||||
#ifndef MAP_FAILED
|
||||
#define MAP_FAILED ((void *)-1)
|
||||
#endif
|
||||
#include "nl_syscall.h"
|
||||
/* Basic I/O */
|
||||
// Basic I/O
|
||||
static inline ssize_t nl_write(int fd, const void *buf, size_t n) {
|
||||
return (ssize_t)__sc3(SYS_write, fd, (long)buf, (long)n);
|
||||
}
|
||||
|
|
@ -28,7 +32,20 @@ static inline int nl_ioctl(int fd, unsigned long req, void *arg) {
|
|||
return (int)__sc3(SYS_ioctl, fd, (long)req, (long)arg);
|
||||
}
|
||||
|
||||
/* mmap / munmap */
|
||||
// fprintf / stderr
|
||||
#define stderr 2
|
||||
#define fprintf(fd, fmt, ...) \
|
||||
do { \
|
||||
char _fb[1024]; \
|
||||
int _fn = nl_snprintf(_fb, sizeof(_fb), fmt, ##__VA_ARGS__); \
|
||||
if (_fn > 0) { \
|
||||
size_t _nw = \
|
||||
(_fn < (int)sizeof(_fb) - 1) ? (size_t)_fn : sizeof(_fb) - 1; \
|
||||
nl_write((int)(long)(fd), _fb, _nw); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
// mmap / munmap
|
||||
static inline void *nl_mmap(void *addr, size_t len, int prot, int flags, int fd,
|
||||
long off) {
|
||||
return (void *)__sc6(SYS_mmap, (long)addr, (long)len, prot, flags, fd, off);
|
||||
|
|
@ -37,7 +54,7 @@ static inline int nl_munmap(void *addr, size_t len) {
|
|||
return (int)__sc2(SYS_munmap, (long)addr, (long)len);
|
||||
}
|
||||
|
||||
/* select */
|
||||
// select
|
||||
struct nl_timeval {
|
||||
long tv_sec;
|
||||
long tv_usec;
|
||||
|
|
@ -55,7 +72,7 @@ static inline int nl_select(int nfds, nl_fd_set *r, nl_fd_set *w, nl_fd_set *e,
|
|||
return (int)__sc6(SYS_select, nfds, (long)r, (long)w, (long)e, (long)tv, 0);
|
||||
}
|
||||
|
||||
/* clock / sleep */
|
||||
// clock / sleep
|
||||
static inline int nl_clock_gettime(clockid_t id, struct timespec *ts) {
|
||||
return (int)__sc2(SYS_clock_gettime, id, (long)ts);
|
||||
}
|
||||
|
|
@ -78,7 +95,7 @@ static inline void nl_exit(int code) {
|
|||
__builtin_unreachable();
|
||||
}
|
||||
|
||||
/* inotify */
|
||||
// inotify
|
||||
static inline int nl_inotify_init1(int flags) {
|
||||
return (int)__sc1(SYS_inotify_init1, flags);
|
||||
}
|
||||
|
|
@ -87,12 +104,16 @@ static inline int nl_inotify_add_watch(int fd, const char *path,
|
|||
return (int)__sc3(SYS_inotify_add_watch, fd, (long)path, mask);
|
||||
}
|
||||
|
||||
/* termios via ioctl */
|
||||
// termios via ioctl
|
||||
#include <termios.h>
|
||||
#define NL_TCGETS 0x5401
|
||||
#define NL_TCSETS 0x5402
|
||||
#define NL_TCSETSF 0x5404
|
||||
|
||||
#define TCSANOW 0
|
||||
#define TCSADRAIN 1
|
||||
#define TCSAFLUSH 2
|
||||
|
||||
static inline int nl_tcgetattr(int fd, struct termios *t) {
|
||||
return nl_ioctl(fd, NL_TCGETS, t);
|
||||
}
|
||||
|
|
@ -101,7 +122,7 @@ static inline int nl_tcsetattr(int fd, int action, const struct termios *t) {
|
|||
return nl_ioctl(fd, req, (void *)t);
|
||||
}
|
||||
|
||||
/* Macro redirects */
|
||||
// Macro redirects
|
||||
#define write(fd, buf, n) nl_write(fd, buf, n)
|
||||
#define read(fd, buf, n) nl_read(fd, buf, n)
|
||||
#define _open2(p, f) nl_open(p, f, 0)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
#include "nl_printf.h"
|
||||
// #include "nolibc.h"
|
||||
#include "nolibc.h"
|
||||
#include <stdarg.h>
|
||||
#include <stddef.h>
|
||||
|
||||
|
|
@ -163,3 +162,7 @@ int nl_snprintf(char *buf, size_t size, const char *fmt, ...) {
|
|||
va_end(ap);
|
||||
return r;
|
||||
}
|
||||
|
||||
void nl_eprint(const char *msg) {
|
||||
nl_write(2, msg, nl_strlen(msg));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,17 +1,13 @@
|
|||
#ifndef NL_PRINTF_H
|
||||
#define NL_PRINTF_H
|
||||
|
||||
#include "nl_io.h"
|
||||
#include "nl_string.h"
|
||||
#include <stdarg.h>
|
||||
#include <stddef.h>
|
||||
|
||||
int nl_vsnprintf(char *buf, size_t size, const char *fmt, va_list ap);
|
||||
int nl_snprintf(char *buf, size_t size, const char *fmt, ...);
|
||||
|
||||
static inline void nl_eprint(const char *msg) {
|
||||
nl_write(2, msg, nl_strlen(msg));
|
||||
}
|
||||
void nl_eprint(const char *msg);
|
||||
|
||||
static inline int nl_fmt_fps(char *buf, size_t sz, double fps) {
|
||||
int whole = (int)fps;
|
||||
|
|
@ -25,15 +21,4 @@ static inline int nl_fmt_fps(char *buf, size_t sz, double fps) {
|
|||
|
||||
#define snprintf nl_snprintf
|
||||
|
||||
#define stderr 2
|
||||
#define fprintf(fd, fmt, ...) \
|
||||
do { \
|
||||
char _fb[1024]; \
|
||||
int _fn = nl_snprintf(_fb, sizeof(_fb), fmt, ##__VA_ARGS__); \
|
||||
if (_fn > 0) { \
|
||||
size_t _nwrite = \
|
||||
(_fn < (int)sizeof(_fb) - 1) ? (size_t)_fn : sizeof(_fb) - 1; \
|
||||
nl_write((int)(long)(fd), _fb, _nwrite); \
|
||||
} \
|
||||
} while (0)
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue