summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-04-11Add warn() and die()Laslo Hunhold
To fully centralize this matter these well-tested functions are added to the util.c, and implemented as we know it from many other suckless projects.
2018-04-11Update manuals and LICENSELaslo Hunhold
This is to display that all the manuals still reflect the current state.
2018-04-11Add efread() and efwrite()Laslo Hunhold
Given we have a util.c anyway it does not make any sense to duplicate code here. This way, error handling and output is in one place and one does not have to change things in multiple different files. This also reduces code duplication by a lot. It also solves an older bug where the error reporting was not on point: $ echo "farb" | ff2png ff2png: fread: Success (It also lacked a newline) Now it properly reports $ echo "farb" | ff2png ff2png: fread: Unexpected end of file I also fixed some other minor details, for instance that all error messages should begin with a capital letter.
2017-08-13Update MANPREFIX according to FHSLaslo Hunhold
http://www.pathname.com/fhs/2.2/fhs-4.11.html
2017-08-04Rename _i,_argused to i_,argused_Laslo Hunhold
Thanks Michael Forney for reporting this! We cannot use identifiers beginning with an underscore, says the C99-standard, section 7.1.3: "All identifiers that begin with an underscore are always reserved for use as identifiers with file scope in both the ordinary and tag name spaces." We go around this by putting the underscore at the end.
2017-08-04arg.h: Small style changeLaslo Hunhold
2017-08-04arg.h: Reformat warranty clause in line with templateLaslo Hunhold
2017-08-04Change the license formatting a bit to be in line with the OSILaslo Hunhold
The (c)-symbol has become more of a remnant after the Berne convention has been signed. Given the ISC exploits some simplifications introduced with the Berne convention, it just makes sense to drop this relict as well and just state our Copyright without much ado about nothing. https://opensource.org/licenses/ISC
2017-08-04arg.h: Fortify ARGC()Laslo Hunhold
You never know...
2017-08-04arg.h: Refactor ARGF_()Laslo Hunhold
2017-08-04arg.h: Do not modify the array elements of argv[]Laslo Hunhold
The C99 standard explicitly allows to modify argc, argv, but leaves it open what happens if you modify the content of argv. Under OpenBSD, this actually has an effect on how the program is listed (e.g. in ps). To prevent this, we just add a counter variable and use that for iteration. While at it, this commit also includes a few style changes. Thanks Hiltjo for reporting this!
2017-08-04arg.h: Rename argparsed to argusedLaslo Hunhold
We do not really parse anything, we just use/devour something.
2017-08-02Remove dangling newlines in LICENSELaslo Hunhold
2017-08-02Combine all license matters in LICENSELaslo Hunhold
We use some OpenBSD code in util.c (namely by Ted Unangst, Todd C. Miller and Otto Moerbeek), which is licensed under the ISC license. To make it clearer and make it easier to see what farbfeld really is licensed under, we include these authors in the LICENSE file and remove the explicit headers from util.c. While at it, we also remove superfluous includes and shove them to the top.
2017-08-02FORMAT: make it a proper table with Unicode-boundary-glyphsLaslo Hunhold
2017-08-02config.mk: small style changeLaslo Hunhold
2017-08-02arg.h: Handle { NULL } argv[] properlyLaslo Hunhold
Previously, we would return argc as -1, which could cause some problems. This was not an issue introduced in the rewrite and is a bug present in the "old" arg.h as well. Thanks Isabella Parakiss for reporting this!
2017-08-02Minor style change in arg.hLaslo Hunhold
We decrement argc first before incrementing argv, so we never have a state where we potentially point to uncharted territory.
2017-07-27Rewrite arg.hLaslo Hunhold
This was something I wanted to do for quite a while now. The problem with the old arg.h is that it does not allow you to call ARGF() and EARGF() multiple times without messing the argument up. This is an unnecessary limitation and can lead to unexpected results for people not aware of this problem. ARGBEGIN { case 'a': printf("1st call: %s\n", ARGF()); printf("2nd call: %s\n", ARGF()); break; default: break; } $ prog -a ARG 1st call: ARG 2nd call: RG This is fixed now to properly print $ prog -a ARG 1st call: ARG 2nd call: ARG The old version also used more local variables than necessary, as the problem can be reduced to one single local variable within the second loop, which expresses if the argument has been consumed or not. The use of abort() within EARGF() was a bit drastic. exit(1) should suffice here and align with what you expect from an e*-type function. Additionally, the formatting I used should make readability easier and the code deduplication in the *ARGF()-macros helps with maintainability. The license used is ISC, which is compatible with MIT/X, GPL and so forth in case you want to use it in your project. I explicitly added the license header to the file making it easy to just drop it in. There are no plans to support the obsolete ARGNUM, ARGNUMF, LNGARG syntaxes.
2017-05-30Makefile - expand targets for portabilityLaslo Hunhold
Reading the standard thoroughly revealed that the only way to really get a portable Makefile is to list each target explicitly, so that's what we'll do now here.
2017-05-29Makefile-workaround for OpenBSDLaslo Hunhold
Thanks Hiltjo for reporting this! For some reason, OpenBSD make does not add $(BIN).o to the dependency list when it sees the $(BIN) target rule. It does so however when it does the conversion from .c to .o. This behaviour is unique for OpenBSD make as far as I've seen, and for the time being, this workaround will manually add the object to the dependency list. This is not POSIX compliant and in GNU make it just evaluates to an empty string, but it works until this has been investigated further.
2017-05-01Rename TOOL-LDFLAGS to TOOL-LDLIBS, fix order and add explicit .c.oLaslo Hunhold
The tool-specific flags were LDLIBS and not LDFLAGS, because we specify the libraries we want to link in, not flags to the linker itself. The order was broken as it didn't allow -Wl,--as-needed or other things highly dependent on the order of arguments. I also wanted to add an explicit .c.o suffix rule. This way, it is clearer what is happening in the Makefile and the form of compilation output is controllable.
2017-04-16Add Alexander and Mattias to LICENSELaslo Hunhold
2017-04-16Bring cc-command-line in orderLaslo Hunhold
Of course, you want the libraries to come last in order of execution. Additionally, in case the libraries provided with $($*-LDFLAGS) contain unresolved symbols, we want to give the opportunity for the user to provide the necessary general symbols, whatever they may be, last. Thanks Duncaen for reporting this!
2017-04-14Bump version to 3Laslo Hunhold
This is more or less a refactoring release, but with deep changes in the tools that I was hoping to look into for a long time. The codebase is in a very consistent state now, also thanks to the introduction of a set of common utility-functions. What really makes me think is the fact that it takes so many iterations and a high level of detail to get the library handling and I/O right. It just makes you wonder how much software is out there that is full of little subtle bugs that might blow up in your face some day. Thanks for all the feedback!
2017-04-14Improve the wording on alpha-blendingLaslo Hunhold
2017-04-14Remove the need of '#' for alpha masksLaslo Hunhold
To be honest, it can happen too easily that the user forgets to put the colour in quotation marks, yielding in the rest of the pipeline to be discarded as a comment.
2017-04-14Improve readability of alpha-blending sectionsLaslo Hunhold
2017-04-14Move the logo a bit to the left so it is centeredLaslo Hunhold
2017-04-14Fix the R in the logoLaslo Hunhold
2017-04-14Update usage of ff2jpg(1) and ff2ppm(1)Laslo Hunhold
so they align with the manpages.
2017-04-14Refactor invert.c in farbfeld.5Laslo Hunhold
I noticed that it would be beneficial to release the invert.c code listing under a very permissive license. I like the style of the "Copy me if you can"-License, but thought that 0BSD would make it even clearer that everyone can do whatever he wants with this code. The code itself was not bad beforehand, but lacked some elementary features like checked flushing at the end and proper error messages. I also reworked the data structures a bit to make it more appealing and clearer where the "guts" of the code are (i.e. in invert()).
2017-04-14Update the Makefile to reflect TODO has been removedLaslo Hunhold
2017-04-14Update and refactor the manpagesLaslo Hunhold
Make them more consistent, and only maintain a list of the conversion tools in farbfeld.5. Refine the wording on the jpg-manpages.
2017-04-14Update the READMELaslo Hunhold
Rework the introductory paragraph and show examples directly afterwards. If people are interested in the tl;dr-sections, they can then read on.
2017-04-14Don't suppress imagemagick and png2ff(1) warningsLaslo Hunhold
Else the user might be left wondering what happened. The output from imagemagick might not be the nicest in the world, but it's bearable for some given edge-cases.
2017-04-14Make comment in ff2jpg(1) more consistentLaslo Hunhold
2017-04-14Refactor 2ff(1)Laslo Hunhold
The Unix philosophy teaches us that tools should strive to output only necessary diagnostic information and also reflect errors properly with the return value. There were three subtle problems with 2ff: 1) If the farbfeld-passthrough failed, it would return 1 instead of 1. 2) If the first 8 bytes contained a NUL byte, bash would print an ugly warning message. Passing it through tr -d '\0' fixes that. 3) Lack of comments. I added some to make the structure even clearer, also including using an if-else-structure. I removed the 2ff error message; the tools themselves print proper messages already.
2017-04-14Staticize functions in png2ff(1)Laslo Hunhold
2017-04-14Remove TODOLaslo Hunhold
It's not very useful for the reader any more.
2017-04-14Add PNG-LDFLAGS and JPG-LDFLAGS in config.mkLaslo Hunhold
instead of per-tool-settings.
2017-04-13Use fshut() to properly flush the output streamLaslo Hunhold
For small images, it could happen that the output stream would not be flushed before exit(), resulting in a lack of error-reporting on a full device. Using fflush(), a function I first introduced in sbase, we do the flushing before returning manually and report errors if they occurred.
2017-04-12Update LICENSELaslo Hunhold
2017-04-12Update TODOLaslo Hunhold
The truncation issue is solved now by checking the return values. Maybe for small images where the FILE-buffer is not flushed early enough we can rethink that. The utility functions were written to the extent it was desired. I added a note not to forget to take a look at the part in the jpg-code which does the color mixing.
2017-04-12Refactor ff2ppm(1)Laslo Hunhold
We make use of the utility functions for parsing the color mask and other things and generally align the code with the general coding style.
2017-04-12Refactor png-conversion-utilitiesLaslo Hunhold
We split out the libpng-setup into a separate function, it is very very ugly. The code also received a general cleanup and aligns itself much better with the general coding style and structure.
2017-04-12Refactor ff2pam(1)Laslo Hunhold
I chose to go with a row-based-approach here, which is a bit easier to read and is somewhat "closer" to the input data.
2017-04-12Refactor jpg-conversion-utilitiesLaslo Hunhold
First of all, there was lots of libjpeg-specific cruft that just didn't have any right to exist (METHODDEF(), strange typedefs, use of the internal memory pool for no reason). This is gone now. Additionally, we make use of the save and proven utility functions and in general the code should be more well-separated now. What is left to do is clear up the part where we mix the colors with the mask.
2017-04-12Also print extra warningsLaslo Hunhold
2017-04-12Rename header-functions and add more util functionsLaslo Hunhold
parse_mask() -> parse a mask-color #xxxxxx ereallocarray() estrtonum() These will come in handy in the respective tools.