From 933a856e05a41ab63dac33ce53da48d91009613f Mon Sep 17 00:00:00 2001 From: Bryson Steck Date: Mon, 20 Jun 2022 23:25:44 -0600 Subject: install man page and other makefile stuff --- Makefile | 21 +++++++++++++-------- config.mk | 6 +++++- uirc.1 | 18 ++++++++---------- uirc.c | 20 ++++++++++++++++---- 4 files changed, 42 insertions(+), 23 deletions(-) diff --git a/Makefile b/Makefile index 252e8a7..0e4ef6b 100644 --- a/Makefile +++ b/Makefile @@ -5,21 +5,26 @@ include config.mk SRC = uirc.c uirc: ${SRC} - ${CC}${OPTIONS} -o uirc -O3 ${SRC} -lcurl -lm + ${CC} ${OPTIONS} -o uirc ${SRC} -lcurl -lm debug: uirc - ${CC} -g${OPTIONS} -o d_uirc -O3 ${SRC} -lcurl -lm + ${CC} -g ${OPTIONS} -o d_uirc -O3 ${SRC} -lcurl -lm gdb d_uirc rm d_uirc +clean: + rm ./uirc + install: uirc - mkdir -p ${PREFIX} - cp -f uirc ${PREFIX} - chmod 755 ${PREFIX}/uirc + mkdir -p ${PREFIX}/bin + cp -f uirc ${PREFIX}/bin + chmod 755 ${PREFIX}/bin/uirc + mkdir -p ${MAN_PREFIX}/man1 + cp -f uirc.1 ${MAN_PREFIX}/man1 uninstall: - rm ${PREFIX}/uirc - test -s ${INCLUDE_PREFIX}/uirc && rm -r ${INCLUDE_PREFIX}/uirc + rm ${PREFIX}/bin/uirc + rm ${MAN_PREFIX}/man1/uirc.1 stb: @echo "It is best to download the stb library from your system's package manager." @@ -28,4 +33,4 @@ stb: mkdir -p ${INCLUDE_PREFIX}/stb wget https://raw.githubusercontent.com/nothings/stb/master/stb_image.h -P ${INCLUDE_PREFIX}/stb -.PHONY: uirc install stb +.PHONY: uirc clean install uninstall stb diff --git a/config.mk b/config.mk index b08f862..75ed0b0 100644 --- a/config.mk +++ b/config.mk @@ -1,11 +1,15 @@ # install location -PREFIX = /usr/local/bin +PREFIX = /usr/local +MAN_PREFIX = ${PREFIX}/share/man LIB_PREFIX = ${PREFIX}/lib INCLUDE_PREFIX = /usr/include # comment the line above and uncomment the following line # if you are building on macOS, otherwise it is optional #INCLUDE_PREFIX = /usr/local/include +# additional compiler options +OPTIONS = -O2 + # manual install location MANPREFIX = ${PREFIX}/share/man diff --git a/uirc.1 b/uirc.1 index b692b23..27ec7fe 100644 --- a/uirc.1 +++ b/uirc.1 @@ -1,9 +1,9 @@ -.TH UIRC 1 "Updated March 26, 2022" "Bryson Steck" +.TH UIRC 1 "Updated June 20, 2022" "Bryson Steck" .SH NAME uirc \- an unneccessary image ratio calculator .SH SYNOPSIS .B uirc -[OPTIONS] IMAGE/URL1 [IMAGE/URL2]... +[\fB-hlvr\fR] [\fIarguments\fR ...] .SH DESCRIPTION uirc is, well, an unnecessary image ratio calculator for us UNIX nerds. It takes files with an image format and returns the ratio of the image. .P @@ -11,7 +11,7 @@ Here are some examples for you. You can use uirc in three different ways. .P .B 1. Using files on the local filesystem .P -You can get the ratio of different images on the local filesystem. You can do this by supplying the name of the file in order to get the ratio of the image. +You can get the ratio of different images on the local filesystem. You can do this by supplying the name of the file as an \fIargument\fR in order to get the ratio of the image. .P $ uirc image1.png image1.png > 4:3 @@ -26,7 +26,7 @@ You may also run into images where their ratios don't factor down nicely. So, ui .P .B 2. Downloading images from a web server .P -You can also get the ratio of images present on a web server. By supplying the URL to an image file, uirc will download the image inside the /tmp folder of your system, evaluate it, then remove it. That isn't important though, you will just end up seeing the name of the file on the web server anyways. +You can also get the ratio of images present on a web server. By supplying the URL to an image file as an \fIargument\fR, uirc will download the image inside the /tmp folder of your system, evaluate it, then remove it. That isn't important though, you will just end up seeing the name of the file on the web server anyways. .P $ uirc https://brysonsteck.net/resurrection-sc.png downloading "https://brysonsteck.net/resurrection-sc.png"...ok @@ -38,7 +38,7 @@ You can also get the ratio of images present on a web server. By supplying the U .P .B 3. Multiple files and URLs .P -uirc can take multiple arguments of images at once and will evaluate them in order. You can do multiple local files, multiple URLs, or multiple of both. +uirc can take multiple \fIarguments\fR of images at once and will evaluate them in order. You can do multiple local files, multiple URLs, or multiple of both. .P $ uirc image1.png homework/yes-this-is-legitimately-homework/quadratic_formula.jpg /usr/share/imgs/popcorn.bmp image1.png > 4:3 @@ -57,8 +57,7 @@ uirc can take multiple arguments of images at once and will evaluate them in ord /usr/share/imgs/popcorn.bmp > 1.24:1 (uneven) .P .SH OPTIONS -.sp 1 -Informational: +.sp .TP 0.5i \fB\-h\fR, \fB\-\-help\fR Display a brief help message on the command line. @@ -69,7 +68,6 @@ Display the brief license disclaimer for uirc on the command line. You can also \fB\-v\fR, \fB\-\-version\fR Display the version of uirc on the command line. .P -Functional: .TP 0.5i \fB\-r\fR, \fB\-\-res\fR Display the resolution of the image(s) in addition to the ratio. @@ -78,9 +76,9 @@ Display the resolution of the image(s) in addition to the ratio. .B Bryson Steck ( GitHub: @brysonsteck ) .br -steck.bryson@gmail.com +brysonsteck@protonmail.com .br -.IR https://brysonsteck.net +.IR https://brysonsteck.xyz .P Please report any bugs/provide feedback for uirc by creating an issue on the GitHub repository: .IR https://github.com/brysonsteck/uirc diff --git a/uirc.c b/uirc.c index 88992c1..59ce560 100644 --- a/uirc.c +++ b/uirc.c @@ -39,6 +39,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include const char *VERSION = "0.1.0"; int rFlag = 1; @@ -58,6 +59,10 @@ int getBcf(int width, int height) { return bcf; } +bool compare_float(float a, float b) { + return fabs(a-b) < 0.0000001; +} + int readFile(char *file, int rFlag, int req, char* url) { int width, height, channels, factor; unsigned char *img = stbi_load(file, &width, &height, &channels, 0); @@ -97,6 +102,8 @@ int readFile(char *file, int rFlag, int req, char* url) { } } + // see if uneven values equal normal aspect ratios + if (factor == 1) { if (width < height) { printf("%s > 1:%.2f (uneven)", file, wuneven); @@ -125,6 +132,7 @@ int download(char *url) { CURLcode res; char outfilename[15] = "/tmp/uirc.tmp"; curl = curl_easy_init(); + long returnCode = 0; if (curl) { fp = fopen(outfilename,"wb"); @@ -132,17 +140,19 @@ int download(char *url) { curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); res = curl_easy_perform(curl); + curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, returnCode); curl_easy_cleanup(curl); fclose(fp); } + printf("%ld\n", returnCode); return 0; } // end of stack overflow snippet int handleArg(char *arg) { - int value, complete; - char flag, *longFlag, *http, first, firstTwo[3], firstFour[5]; + int complete; + char flag, first, firstTwo[3], firstFour[5]; const char *help; help = "USAGE: uirc [OPTIONS] IMAGE1 [IMAGE2] [...]\n\n" @@ -212,7 +222,7 @@ int handleArg(char *arg) { int main(int argc, char *argv[]) { char *i, *a; - int runs; + int runs, code, arg_code; if (argc <= 1) { printf("uirc: at least one argument is required\n"); @@ -221,7 +231,9 @@ int main(int argc, char *argv[]) { for (int i = 1; i < argc; i++) { a = argv[i]; - handleArg(a); + arg_code = handleArg(a); + if (arg_code > code) + code = arg_code; runs++; } -- cgit v1.2.3