format: GNU

This commit is contained in:
2025-07-17 13:47:53 -04:00
parent ad46dba3db
commit 7a1a6b9965
4 changed files with 75 additions and 57 deletions

View File

@@ -2,10 +2,13 @@
#include "print.h" #include "print.h"
#include <stdlib.h> #include <stdlib.h>
error_t unwrap(error_t err) { error_t
if (!err.null) { unwrap (error_t err)
printfn("error: %s", err.src); {
exit(err.status); if (!err.null)
{
printfn ("error: %s", err.src);
exit (err.status);
} }
return err; return err;
} }

View File

@@ -7,45 +7,51 @@
#include <sys/stat.h> #include <sys/stat.h>
#include <sys/types.h> #include <sys/types.h>
error_t touch(char *path, char *format, ...) { error_t
error_t err = {0}; touch (char *path, char *format, ...)
{
error_t err = { 0 };
err.null = true; // success by default err.null = true; // success by default
va_list args; va_list args;
va_start(args, format); va_start (args, format);
FILE *fp = fopen(path, "w"); FILE *fp = fopen (path, "w");
if (!fp) { if (!fp)
{
err.null = false; err.null = false;
err.status = errno; err.status = errno;
err.src = strerror(errno); err.src = strerror (errno);
va_end(args); va_end (args);
return err; return err;
} }
vfprintf(fp, format, args); vfprintf (fp, format, args);
fclose(fp); fclose (fp);
va_end(args); va_end (args);
return err; return err;
} }
error_t dir(char *format, ...) { error_t
error_t err = {0}; dir (char *format, ...)
{
error_t err = { 0 };
err.null = true; // success by default err.null = true; // success by default
va_list args; va_list args;
va_start(args, format); va_start (args, format);
char path[1024]; char path[1024];
vsnprintf(path, sizeof(path), format, args); vsnprintf (path, sizeof (path), format, args);
va_end(args); va_end (args);
if (mkdir(path, 0777) < 0) { if (mkdir (path, 0777) < 0)
{
err.null = false; err.null = false;
err.status = errno; err.status = errno;
err.src = strerror(errno); err.src = strerror (errno);
} }
return err; return err;

View File

@@ -2,13 +2,15 @@
#include <stdarg.h> #include <stdarg.h>
#include <stdio.h> #include <stdio.h>
int printfn(char *format, ...) { int
printfn (char *format, ...)
{
int len; int len;
va_list args; va_list args;
va_start(args, format); va_start (args, format);
fprintf(stderr, "yait: "); fprintf (stderr, "yait: ");
len = vfprintf(stderr, format, args); len = vfprintf (stderr, format, args);
putchar('\n'); putchar ('\n');
va_end(args); va_end (args);
return len; return len;
} }

View File

@@ -1,33 +1,40 @@
#include "../core/print.h"
#include "../core/file.h" #include "../core/file.h"
#include "../core/print.h"
#include "format.h" #include "format.h"
int create(format_t); int create (format_t);
int main(int argc, char **argv) { int
if (argc < 2) { main (int argc, char **argv)
printfn("error: not enough arguments."); {
if (argc < 2)
{
printfn ("error: not enough arguments.");
return 1; return 1;
} }
format_t conf; format_t conf;
conf.name = argv[1]; conf.name = argv[1];
conf.nogit = false; conf.nogit = false;
create (conf);
create(conf);
return 0; return 0;
} }
int create(format_t fmt) { int
take(fmt.name); create (format_t fmt)
{
touch("README", take (fmt.name);
touch ("README",
"%s ( concise description )\n\n" "%s ( concise description )\n\n"
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor\n" "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do "
"incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis\n" "eiusmod tempor\n"
"nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n" "incididunt ut labore et dolore magna aliqua. Ut enim ad minim "
"Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu\n" "veniam, quis\n"
"fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in\n" "nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo "
"consequat.\n"
"Duis aute irure dolor in reprehenderit in voluptate velit esse "
"cillum dolore eu\n"
"fugiat nulla pariatur. Excepteur sint occaecat cupidatat non "
"proident, sunt in\n"
"culpa qui officia deserunt mollit anim id est laborum.", "culpa qui officia deserunt mollit anim id est laborum.",
fmt.name); fmt.name);
touch ("hello", "world"); touch ("hello", "world");