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,46 +7,52 @@
#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.status = errno; err.null = false;
err.src = strerror(errno); err.status = errno;
va_end(args); err.src = strerror (errno);
return err; va_end (args);
} 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.status = errno; err.null = false;
err.src = strerror(errno); err.status = 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,35 +1,42 @@
#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) {
if (argc < 2) {
printfn("error: not enough arguments.");
return 1;
}
int
main (int argc, char **argv)
{
if (argc < 2)
{
printfn ("error: not enough arguments.");
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);
"%s ( concise description )\n\n" touch ("README",
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor\n" "%s ( concise description )\n\n"
"incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis\n" "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do "
"nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n" "eiusmod tempor\n"
"Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu\n" "incididunt ut labore et dolore magna aliqua. Ut enim ad minim "
"fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in\n" "veniam, quis\n"
"culpa qui officia deserunt mollit anim id est laborum.", "nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo "
fmt.name); "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.",
fmt.name);
touch ("hello", "world"); touch ("hello", "world");
return 0; return 0;
} }