Browse Source

Remove prefs.h/prefs.c

Too many files. These aren't needed. Fold them in.
master
cancel 5 years ago
parent
commit
39c119e579
  1. 114
      cboard.c
  2. 13
      cboard.h
  3. 112
      prefs.c
  4. 15
      prefs.h
  5. 2
      tool

114
cboard.c

@ -1,7 +1,8 @@
#include "cboard.h"
#include "gbuffer.h"
#include <stdio.h>
#include <ctype.h>
ORCA_FORCE_NO_INLINE
Cboard_error cboard_copy(Glyph const* gbuffer, Usz field_height,
Usz field_width, Usz rect_y, Usz rect_x, Usz rect_h,
Usz rect_w) {
@ -19,6 +20,7 @@ Cboard_error cboard_copy(Glyph const* gbuffer, Usz field_height,
return status ? Cboard_error_process_exit_error : Cboard_error_none;
}
ORCA_FORCE_NO_INLINE
Cboard_error cboard_paste(Glyph* gbuffer, Usz height, Usz width, Usz y, Usz x,
Usz* out_h, Usz* out_w) {
FILE* fp = popen("xclip -o -selection clipboard 2>/dev/null", "r");
@ -53,3 +55,113 @@ Cboard_error cboard_paste(Glyph* gbuffer, Usz height, Usz width, Usz y, Usz x,
*out_w = max_x - start_x + 1;
return status ? Cboard_error_process_exit_error : Cboard_error_none;
}
ORCA_FORCE_NO_INLINE
Conf_read_result conf_read_line(FILE* file, char* buf, Usz bufsize,
char** out_left, Usz* out_leftsize,
char** out_right, Usz* out_rightsize) {
Usz len, a0, a1, b0, b1;
char* s;
if (bufsize < 2)
goto insufficient_buffer;
#if SIZE_MAX > INT_MAX
if (bufsize > (Usz)INT_MAX)
exit(1); // he boot too big
#endif
s = fgets(buf, (int)bufsize, file);
if (!s) {
if (feof(file))
goto eof;
goto ioerror;
}
len = strlen(buf);
if (len == bufsize - 1 && buf[len - 1] != '\n' && !feof(file))
goto insufficient_buffer;
a0 = 0; // start of left
for (;;) {
if (a0 == len)
goto ignore;
char c = s[a0];
if (c == ';' || c == '#') // comment line, ignore
goto ignore;
if (c == '=') // '=' before any other char, bad
goto ignore;
if (!isspace(c))
break;
a0++;
}
a1 = a0; // end of left
for (;;) {
a1++;
if (a1 == len)
goto ignore;
char c = s[a1];
Usz x = a1;
while (isspace(c)) {
x++;
if (x == len)
goto ignore;
c = s[x];
}
if (c == '=') {
b0 = x;
break;
}
a1 = x;
}
for (;;) {
b0++;
if (b0 == len)
goto ignore;
char c = s[b0];
if (!isspace(c))
break;
}
b1 = b0; // end of right
for (;;) {
b1++;
if (b1 == len)
goto ok;
char c = s[b1];
Usz x = b1;
while (isspace(c)) {
x++;
if (x == len)
goto ok;
c = s[x];
}
b1 = x;
}
Conf_read_result err;
insufficient_buffer:
err = Conf_read_buffer_too_small;
goto fail;
eof:
err = Conf_read_eof;
goto fail;
ioerror:
err = Conf_read_io_error;
goto fail;
fail:
*out_left = NULL;
*out_leftsize = 0;
goto no_right;
ignore:
s[len - 1] = '\0';
*out_left = s;
*out_leftsize = len;
err = Conf_read_irrelevant;
goto no_right;
no_right:
*out_right = NULL;
*out_rightsize = 0;
return err;
ok:
s[a1] = '\0';
s[b1] = '\0';
*out_left = s + a0;
*out_leftsize = a1 - a0;
*out_right = s + b0;
*out_rightsize = b1 - b0;
return Conf_read_left_and_right;
}

13
cboard.h

@ -1,5 +1,6 @@
#pragma once
#include "base.h"
#include <stdio.h> // FILE cannot be forward declared
typedef enum {
Cboard_error_none = 0,
@ -14,3 +15,15 @@ Cboard_error cboard_copy(Glyph const* gbuffer, Usz field_height,
Cboard_error cboard_paste(Glyph* gbuffer, Usz height, Usz width, Usz y, Usz x,
Usz* out_h, Usz* out_w);
typedef enum {
Conf_read_left_and_right = 0, // left and right will be set
Conf_read_irrelevant, // only left will be set
Conf_read_buffer_too_small, // neither will be set
Conf_read_eof, // "
Conf_read_io_error, // "
} Conf_read_result;
Conf_read_result conf_read_line(FILE* file, char* buf, Usz bufsize,
char** out_left, Usz* out_leftlen,
char** out_right, Usz* out_rightlen);

112
prefs.c

@ -1,112 +0,0 @@
#include "prefs.h"
#include <ctype.h>
ORCA_FORCE_NO_INLINE
Conf_read_result conf_read_line(FILE* file, char* buf, Usz bufsize,
char** out_left, Usz* out_leftsize,
char** out_right, Usz* out_rightsize) {
Usz len, a0, a1, b0, b1;
char* s;
if (bufsize < 2)
goto insufficient_buffer;
#if SIZE_MAX > INT_MAX
if (bufsize > (Usz)INT_MAX)
exit(1); // he boot too big
#endif
s = fgets(buf, (int)bufsize, file);
if (!s) {
if (feof(file))
goto eof;
goto ioerror;
}
len = strlen(buf);
if (len == bufsize - 1 && buf[len - 1] != '\n' && !feof(file))
goto insufficient_buffer;
a0 = 0; // start of left
for (;;) {
if (a0 == len)
goto ignore;
char c = s[a0];
if (c == ';' || c == '#') // comment line, ignore
goto ignore;
if (c == '=') // '=' before any other char, bad
goto ignore;
if (!isspace(c))
break;
a0++;
}
a1 = a0; // end of left
for (;;) {
a1++;
if (a1 == len)
goto ignore;
char c = s[a1];
Usz x = a1;
while (isspace(c)) {
x++;
if (x == len)
goto ignore;
c = s[x];
}
if (c == '=') {
b0 = x;
break;
}
a1 = x;
}
for (;;) {
b0++;
if (b0 == len)
goto ignore;
char c = s[b0];
if (!isspace(c))
break;
}
b1 = b0; // end of right
for (;;) {
b1++;
if (b1 == len)
goto ok;
char c = s[b1];
Usz x = b1;
while (isspace(c)) {
x++;
if (x == len)
goto ok;
c = s[x];
}
b1 = x;
}
Conf_read_result err;
insufficient_buffer:
err = Conf_read_buffer_too_small;
goto fail;
eof:
err = Conf_read_eof;
goto fail;
ioerror:
err = Conf_read_io_error;
goto fail;
fail:
*out_left = NULL;
*out_leftsize = 0;
goto no_right;
ignore:
s[len - 1] = '\0';
*out_left = s;
*out_leftsize = len;
err = Conf_read_irrelevant;
goto no_right;
no_right:
*out_right = NULL;
*out_rightsize = 0;
return err;
ok:
s[a1] = '\0';
s[b1] = '\0';
*out_left = s + a0;
*out_leftsize = a1 - a0;
*out_right = s + b0;
*out_rightsize = b1 - b0;
return Conf_read_left_and_right;
}

15
prefs.h

@ -1,15 +0,0 @@
#pragma once
#include "base.h"
#include <stdio.h> // FILE cannot be forward declared
typedef enum {
Conf_read_left_and_right = 0, // left and right will be set
Conf_read_irrelevant, // only left will be set
Conf_read_buffer_too_small, // neither will be set
Conf_read_eof, // "
Conf_read_io_error, // "
} Conf_read_result;
Conf_read_result conf_read_line(FILE* file, char* buf, Usz bufsize,
char** out_left, Usz* out_leftlen,
char** out_right, Usz* out_rightlen);

2
tool

@ -308,7 +308,7 @@ build_target() {
out_exe=cli
;;
orca|tui)
add source_files osc_out.c term_util.c cboard.c prefs.c tui_main.c
add source_files osc_out.c term_util.c cboard.c tui_main.c
add cc_flags -D_XOPEN_SOURCE_EXTENDED=1
# thirdparty headers (like sokol_time.h) should get -isystem for their
# include dir so that any warnings they generate with our warning flags

Loading…
Cancel
Save