/* contrib/mips-msa/linux.c * * Copyright (c) 2020 Cosmin Truta * Copyright (c) 2016 Glenn Randers-Pehrson * Written by Mandar Sahastrabuddhe, 2016. * * This code is released under the libpng license. * For conditions of distribution and use, see the disclaimer * and license in png.h * * SEE contrib/mips-msa/README before reporting bugs * * STATUS: SUPPORTED * BUG REPORTS: png-mng-implement@sourceforge.net * * png_have_msa implemented for Linux by reading the widely available * pseudo-file /proc/cpuinfo. * * This code is strict ANSI-C and is probably moderately portable; it does * however use and it assumes that /proc/cpuinfo is never localized. */ #include #include #include static int png_have_msa(png_structp png_ptr) { FILE *f = fopen("/proc/cpuinfo", "rb"); char *string = "msa"; char word[10]; if (f != NULL) { while(!feof(f)) { int ch = fgetc(f); static int i = 0; while(!(ch <= 32)) { word[i++] = ch; ch = fgetc(f); } int val = strcmp(string, word); if (val == 0) { fclose(f); return 1; } i = 0; memset(word, 0, 10); } fclose(f); } #ifdef PNG_WARNINGS_SUPPORTED else png_warning(png_ptr, "/proc/cpuinfo open failed"); #endif return 0; }