fixed implicit warnings
This commit is contained in:
parent
59e6c09a86
commit
b8a39733e6
3 changed files with 84 additions and 82 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -13,3 +13,6 @@ d_uirc
|
||||||
*.jpg
|
*.jpg
|
||||||
*.jpeg
|
*.jpeg
|
||||||
*.bmp
|
*.bmp
|
||||||
|
|
||||||
|
# my folder of test images
|
||||||
|
test/
|
||||||
|
|
7
Makefile
7
Makefile
|
@ -8,7 +8,7 @@ uirc: ${SRC}
|
||||||
${CC} -l curl -o uirc -O ${SRC} -lm
|
${CC} -l curl -o uirc -O ${SRC} -lm
|
||||||
|
|
||||||
debug: uirc
|
debug: uirc
|
||||||
${CC} -g -o d_uirc -O ${SRC} -lm
|
${CC} -g -l curl -o d_uirc -O ${SRC} -lm
|
||||||
gdb d_uirc
|
gdb d_uirc
|
||||||
rm d_uirc
|
rm d_uirc
|
||||||
|
|
||||||
|
@ -16,13 +16,10 @@ install: uirc
|
||||||
mkdir -p ${PREFIX}
|
mkdir -p ${PREFIX}
|
||||||
cp -f uirc ${PREFIX}
|
cp -f uirc ${PREFIX}
|
||||||
chmod 755 ${PREFIX}/uirc
|
chmod 755 ${PREFIX}/uirc
|
||||||
mkdir -p ${LIB_PREFIX}/uirc
|
|
||||||
cp -f LICENSE ${LIB_PREFIX}/uirc
|
|
||||||
|
|
||||||
uninstall:
|
uninstall:
|
||||||
rm ${PREFIX}/uirc
|
rm ${PREFIX}/uirc
|
||||||
rm -r ${LIB_PREFIX}/uirc
|
test -s ${INCLUDE_PREFIX}/uirc && rm -r ${INCLUDE_PREFIX}/uirc
|
||||||
test -s ${INCLUDE_PREFIX}/uirc || rm -r ${INCLUDE_PREFIX}/uirc
|
|
||||||
|
|
||||||
stb:
|
stb:
|
||||||
@echo "It is best to download the stb library from your system's package manager."
|
@echo "It is best to download the stb library from your system's package manager."
|
||||||
|
|
156
uirc.c
156
uirc.c
|
@ -41,10 +41,83 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include <stb/stb_image.h>
|
#include <stb/stb_image.h>
|
||||||
#include <curl/curl.h>
|
#include <curl/curl.h>
|
||||||
#include <curl/easy.h>
|
#include <curl/easy.h>
|
||||||
#include <stdbool.h>
|
|
||||||
|
|
||||||
const char *VERSION = "0.1.0";
|
const char *VERSION = "0.1.0";
|
||||||
|
|
||||||
|
int getBcf(int width, int height) {
|
||||||
|
int *widthFactors, *heightFactors;
|
||||||
|
int bcf;
|
||||||
|
for (int i = 1; i <= width; i++) {
|
||||||
|
for (int j = 1; j <= height; j++) {
|
||||||
|
if (width % i == 0) {
|
||||||
|
if (height % j == 0 && i == j) {
|
||||||
|
bcf = j;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return bcf;
|
||||||
|
}
|
||||||
|
|
||||||
|
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);
|
||||||
|
if (img == NULL) {
|
||||||
|
if (req == 0) {
|
||||||
|
printf("uirc: request failed (%s), trying local fs instead\n", url);
|
||||||
|
return 4;
|
||||||
|
} else {
|
||||||
|
printf("uirc: could not open file %s\n", file);
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
factor = getBcf(width, height);
|
||||||
|
stbi_image_free(img);
|
||||||
|
double wuneven = ((float) height) / ((float) width);
|
||||||
|
double huneven = ((float) width) / ((float) height);
|
||||||
|
|
||||||
|
if (req == 0) {
|
||||||
|
file = url;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (factor == 1) {
|
||||||
|
if (width < height) {
|
||||||
|
printf("%s > 1:%.2f (uneven)\n", file, wuneven);
|
||||||
|
} else {
|
||||||
|
printf("%s > %.2f:1 (uneven)\n", file, huneven);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
printf("%s > %d:%d\n", file, width / factor, height / factor);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// thanks :) https://stackoverflow.com/questions/19404616/c-program-for-downloading-files-with-curl
|
||||||
|
size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) {
|
||||||
|
size_t written = fwrite(ptr, size, nmemb, stream);
|
||||||
|
return written;
|
||||||
|
}
|
||||||
|
|
||||||
|
int download(char *url) {
|
||||||
|
CURL *curl;
|
||||||
|
FILE *fp;
|
||||||
|
CURLcode res;
|
||||||
|
char outfilename[FILENAME_MAX] = "/tmp/uirc.tmp";
|
||||||
|
curl = curl_easy_init();
|
||||||
|
if (curl) {
|
||||||
|
fp = fopen(outfilename,"wb");
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, url);
|
||||||
|
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
|
||||||
|
curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
fclose(fp);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
// end of stack overflow
|
||||||
|
|
||||||
int handleArg(char *arg) {
|
int handleArg(char *arg) {
|
||||||
int value, size;
|
int value, size;
|
||||||
char flag, *longFlag, *http, first, firstTwo[3], firstFour[5];
|
char flag, *longFlag, *http, first, firstTwo[3], firstFour[5];
|
||||||
|
@ -79,7 +152,7 @@ int handleArg(char *arg) {
|
||||||
firstTwo[2] = '\0';
|
firstTwo[2] = '\0';
|
||||||
size = sizeof arg;
|
size = sizeof arg;
|
||||||
|
|
||||||
int rFlag;
|
int rFlag = 1;
|
||||||
|
|
||||||
// determine if any arguments are flags
|
// determine if any arguments are flags
|
||||||
if (strcmp(longFlag, firstTwo) == 0) {
|
if (strcmp(longFlag, firstTwo) == 0) {
|
||||||
|
@ -99,7 +172,8 @@ int handleArg(char *arg) {
|
||||||
printf("https://github.com/brysonsteck/uirc/blob/master/LICENSE\n");
|
printf("https://github.com/brysonsteck/uirc/blob/master/LICENSE\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
case 'r':
|
case 'r':
|
||||||
rFlag = true;
|
rFlag = 0;
|
||||||
|
exit(1);
|
||||||
break;
|
break;
|
||||||
case '\0':
|
case '\0':
|
||||||
break;
|
break;
|
||||||
|
@ -110,7 +184,7 @@ int handleArg(char *arg) {
|
||||||
download(arg);
|
download(arg);
|
||||||
int complete = readFile("/tmp/uirc.tmp", rFlag, 0, arg);
|
int complete = readFile("/tmp/uirc.tmp", rFlag, 0, arg);
|
||||||
if (complete != 0) {
|
if (complete != 0) {
|
||||||
complete = readFile(arg, rFlag, 1);
|
complete = readFile(arg, rFlag, 1, "");
|
||||||
if (complete != 0) {
|
if (complete != 0) {
|
||||||
exit(4);
|
exit(4);
|
||||||
}
|
}
|
||||||
|
@ -118,83 +192,12 @@ int handleArg(char *arg) {
|
||||||
remove("/tmp/uirc.tmp");
|
remove("/tmp/uirc.tmp");
|
||||||
} else {
|
} else {
|
||||||
// if no more flags, run ratio calculations
|
// if no more flags, run ratio calculations
|
||||||
return readFile(arg, rFlag, 1);
|
return readFile(arg, rFlag, 1, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
|
||||||
if (img == NULL) {
|
|
||||||
if (req == 0) {
|
|
||||||
printf("uirc: request failed (%s), trying local fs instead\n", url);
|
|
||||||
return 4;
|
|
||||||
} else {
|
|
||||||
printf("uirc: could not open file %s\n", file);
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
factor = getBcf(width, height);
|
|
||||||
stbi_image_free(img);
|
|
||||||
double wuneven = ((float) height) / ((float) width);
|
|
||||||
double huneven = ((float) width) / ((float) height);
|
|
||||||
|
|
||||||
if (factor == 1) {
|
|
||||||
if (width < height) {
|
|
||||||
printf("%s > 1:%.2f (uneven)\n", file, wuneven);
|
|
||||||
} else {
|
|
||||||
printf("%s > %.2f:1 (uneven)\n", file, huneven);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
printf("%s > %d:%d\n", file, width / factor, height / factor);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int getBcf(int width, int height) {
|
|
||||||
int *widthFactors, *heightFactors;
|
|
||||||
int bcf;
|
|
||||||
for (int i = 1; i <= width; i++) {
|
|
||||||
for (int j = 1; j <= height; j++) {
|
|
||||||
if (width % i == 0) {
|
|
||||||
if (height % j == 0 && i == j) {
|
|
||||||
bcf = j;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return bcf;
|
|
||||||
}
|
|
||||||
|
|
||||||
// thanks :) https://stackoverflow.com/questions/19404616/c-program-for-downloading-files-with-curl
|
|
||||||
size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) {
|
|
||||||
size_t written = fwrite(ptr, size, nmemb, stream);
|
|
||||||
return written;
|
|
||||||
}
|
|
||||||
|
|
||||||
int download(char *url) {
|
|
||||||
CURL *curl;
|
|
||||||
FILE *fp;
|
|
||||||
CURLcode res;
|
|
||||||
char outfilename[FILENAME_MAX] = "/tmp/uirc.tmp";
|
|
||||||
curl = curl_easy_init();
|
|
||||||
if (curl) {
|
|
||||||
fp = fopen(outfilename,"wb");
|
|
||||||
curl_easy_setopt(curl, CURLOPT_URL, url);
|
|
||||||
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
|
|
||||||
curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
|
|
||||||
res = curl_easy_perform(curl);
|
|
||||||
curl_easy_cleanup(curl);
|
|
||||||
fclose(fp);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
// end of stack overflow
|
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
//int i;
|
|
||||||
char *i;
|
char *i;
|
||||||
|
|
||||||
if (argc <= 1) {
|
if (argc <= 1) {
|
||||||
|
@ -212,4 +215,3 @@ int main(int argc, char *argv[]) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue