• Nem Talált Eredményt

E sources könyvtárba mindenekelőtt csináljunk egy colored.c nevű fájlt, ami ezt tartalmazza:

#include<stdio.h>

#include<stdlib.h>

#include <string.h>

#include <unistd.h>

#include <ctype.h>

#include <stddef.h>

#define MAXCHAR 32767

#define COLOR_RED "\x1b[31m"

#define COLOR_GREEN "\x1b[32m"

#define COLOR_YELLOW "\x1b[33m"

#define COLOR_BLUE "\x1b[34m"

#define COLOR_MAGENTA "\x1b[35m"

#define COLOR_CYAN "\x1b[36m"

#define COLOR_WHITE "\x1b[37m"

#define COLOR_BRIGHT "\033[01m"

#define COLOR_UNDERLINE "\033[04m"

#define COLOR_RESET "\x1b[0m"

struct cser { const char *regi;

const char *uj;

};

struct cser csere[] = {

{"error", COLOR_RED COLOR_BRIGHT "error" COLOR_RESET}, {"Error", COLOR_RED COLOR_BRIGHT "Error" COLOR_RESET}, {"broken", COLOR_RED COLOR_BRIGHT "broken" COLOR_RESET}, {"Broken", COLOR_RED COLOR_BRIGHT "Broken" COLOR_RESET}, {"ERROR", COLOR_RED COLOR_BRIGHT "ERROR" COLOR_RESET}, {"hiba", COLOR_RED COLOR_BRIGHT "hiba" COLOR_RESET}, {"Hiba", COLOR_RED COLOR_BRIGHT "Hiba" COLOR_RESET}, {"HIBA", COLOR_RED COLOR_BRIGHT "HIBA" COLOR_RESET},

{"MISSING", COLOR_RED COLOR_BRIGHT "MISSING" COLOR_RESET}, {"Missing", COLOR_RED COLOR_BRIGHT "Missing" COLOR_RESET}, {"missing", COLOR_RED COLOR_BRIGHT "missing" COLOR_RESET}, {"failure", COLOR_RED COLOR_BRIGHT "failure" COLOR_RESET}, {"Failure", COLOR_RED COLOR_BRIGHT "Failure" COLOR_RESET},

{"FAILURE", COLOR_RED COLOR_BRIGHT "FAILURE" COLOR_RESET}, {"bad", COLOR_RED COLOR_BRIGHT "bad" COLOR_RESET},

{"Bad", COLOR_RED COLOR_BRIGHT "Bad" COLOR_RESET}, {"BAD", COLOR_RED COLOR_BRIGHT "BAD" COLOR_RESET},

{"File exists", COLOR_RED COLOR_BRIGHT "File exists" COLOR_RESET},

{"ln: failed to create symbolic link", COLOR_RED COLOR_BRIGHT "ln: failed to create symbolic link" COLOR_RESET},

{"executing", COLOR_RED "executing" COLOR_RESET},

{"rm ", COLOR_RED COLOR_BRIGHT COLOR_UNDERLINE "rm " COLOR_RESET}, {"warning", COLOR_MAGENTA "warning" COLOR_RESET},

{"Warning", COLOR_MAGENTA "Warning" COLOR_RESET}, {"WARNING", COLOR_MAGENTA "WARNING" COLOR_RESET}, {"unknown", COLOR_MAGENTA "unknown" COLOR_RESET}, {"Unknown", COLOR_MAGENTA "Unknown" COLOR_RESET}, {"UNKNOWN", COLOR_MAGENTA "UNKNOWN" COLOR_RESET}, {"invalid", COLOR_MAGENTA "invalid" COLOR_RESET}, {"Invalid", COLOR_MAGENTA "Invalid" COLOR_RESET}, {"INVALID", COLOR_MAGENTA "INVALID" COLOR_RESET}, {"gcc ", COLOR_YELLOW "gcc " COLOR_RESET},

{"g++ ", COLOR_YELLOW "g++ " COLOR_RESET}, {"ld ", COLOR_YELLOW "ld " COLOR_RESET}, {" CC ", COLOR_YELLOW " CC " COLOR_RESET}, {"CC ", COLOR_YELLOW "CC " COLOR_RESET}, {"\tCC", COLOR_YELLOW "\tCC" COLOR_RESET},

{"checking ", COLOR_YELLOW "checking " COLOR_RESET}, {"check ", COLOR_YELLOW "check " COLOR_RESET},

{"Checking ", COLOR_YELLOW "Checking " COLOR_RESET}, {"Check ", COLOR_YELLOW "Check " COLOR_RESET},

{" yes", COLOR_BLUE COLOR_BRIGHT " yes" COLOR_RESET}, {"\tyes", COLOR_BLUE COLOR_BRIGHT "\tyes" COLOR_RESET}, {" Yes", COLOR_BLUE COLOR_BRIGHT " Yes" COLOR_RESET},

{"succeeded", COLOR_BLUE COLOR_BRIGHT "succeeded" COLOR_RESET}, {"Succeeded", COLOR_BLUE COLOR_BRIGHT "Succeeded" COLOR_RESET}, {"SUCCEEDED", COLOR_BLUE COLOR_BRIGHT "SUCCEEDED" COLOR_RESET}, {"\tYes", COLOR_BLUE COLOR_BRIGHT "\tYes" COLOR_RESET},

{"Symlinking", COLOR_YELLOW COLOR_BRIGHT "Symlinking" COLOR_RESET}, {"install", COLOR_YELLOW COLOR_BRIGHT "install" COLOR_RESET},

{"Install", COLOR_YELLOW COLOR_BRIGHT "Install" COLOR_RESET}, {"INSTALL", COLOR_YELLOW COLOR_BRIGHT "INSTALL" COLOR_RESET}, {"linking", COLOR_YELLOW COLOR_BRIGHT "linking" COLOR_RESET}, {"ln -s", COLOR_YELLOW COLOR_BRIGHT "ln -s" COLOR_RESET}, {"Linking", COLOR_YELLOW COLOR_BRIGHT "Linking" COLOR_RESET},

{"installing", COLOR_YELLOW COLOR_BRIGHT "installing" COLOR_RESET}, {"Installing", COLOR_YELLOW COLOR_BRIGHT "Installing" COLOR_RESET}, {"install:", COLOR_YELLOW COLOR_BRIGHT "install:" COLOR_RESET}, {"Install:", COLOR_YELLOW COLOR_BRIGHT "Install:" COLOR_RESET}, {"Moving", COLOR_YELLOW COLOR_BRIGHT "Moving" COLOR_RESET}, {"creating", COLOR_YELLOW COLOR_BRIGHT "creating" COLOR_RESET}, {"Creating", COLOR_YELLOW COLOR_BRIGHT "Creating" COLOR_RESET},

{"No such file or directory", COLOR_RED COLOR_BRIGHT "No such file or directory"

COLOR_RESET},

{" no", COLOR_RED COLOR_BRIGHT " no" COLOR_RESET}, {"\tno", COLOR_RED COLOR_BRIGHT "\tno" COLOR_RESET}, {" No", COLOR_RED COLOR_BRIGHT " No" COLOR_RESET}, {"\tNo", COLOR_RED COLOR_BRIGHT "\tNo" COLOR_RESET}, {"failed", COLOR_RED COLOR_BRIGHT "failed" COLOR_RESET}, {"Failed", COLOR_RED COLOR_BRIGHT "Failed" COLOR_RESET},

{"szimbolikus link létrehozása meghiúsult: A fájl már létezik", COLOR_RED COLOR_BRIGHT "szimbolikus link létrehozása meghiúsult: A fájl már létezik"

COLOR_RESET},

{"FAILED", COLOR_RED COLOR_BRIGHT "FAILED" COLOR_RESET}, {"==>", COLOR_CYAN COLOR_BRIGHT "==>" COLOR_RESET},

{"->", COLOR_CYAN COLOR_BRIGHT "->" COLOR_RESET}, {"skipped", COLOR_CYAN "skipped" COLOR_RESET}, {"SKIP:", COLOR_CYAN "SKIP:" COLOR_RESET}, {"mkdir:", COLOR_CYAN "mkdir:" COLOR_RESET}, {"ln:", COLOR_CYAN "ln:" COLOR_RESET},

{"Command for ", COLOR_YELLOW COLOR_BRIGHT "Command for " COLOR_RESET},

};

int MAXCSERE = sizeof(csere)/sizeof(struct cser);

char *replace_str(const char *str, const char *old, const char *new) {

char *ret, *r;

const char *p, *q;

size_t oldlen = strlen(old);

size_t count, retlen, newlen = strlen(new);

if (oldlen != newlen) {

for (count = 0, p = str; (q = strstr(p, old)) != NULL; p = q + oldlen) count++;

/* this is undefined if p - str > PTRDIFF_MAX */

retlen = p - str + strlen(p) + count * (newlen - oldlen);

} else

retlen = strlen(str);

if ((ret = malloc(retlen + 1)) == NULL) return NULL;

for (r = ret, p = str; (q = strstr(p, old)) != NULL; p = q + oldlen) { /* this is undefined if q - p > PTRDIFF_MAX */

ptrdiff_t l = q - p;

memcpy(r, p, l);

r += l;

memcpy(r, new, newlen);

r += newlen;

}

strcpy(r, p);

return ret;

}

// ========================================================================

char inputpuffer[256];

size_t hossz=0;

int i;

char *elso;

char *masodik;

char ideiglenes[MAXCHAR];

int main(int argc,char **argv) {

while(fgets(inputpuffer,100,stdin)) { ; // beolvassuk a standard inputról jövő stringet

inputpuffer[255]=0;

strcpy(ideiglenes,inputpuffer);

elso=ideiglenes;

// **********************************

for(i=0;i<MAXCSERE;i++) {

masodik=replace_str(elso,csere[i].regi,csere[i].uj);

strcpy(ideiglenes,masodik);

free(masodik);

elso=ideiglenes;

};

// **********************************

// Most az elso-ben illetve a ideiglenesben van a jo szoveg printf("%s",elso);

} // while vége //free(inputpuffer);

exit(EXIT_SUCCESS);

}

E fenti program fogja majd nekünk úgymond „kiszínezni az outputot”. Azaz, rengetegszer fogunk fordítani más programokat, s ekkor nagyon hasznos, ha a make kimenetében vörösen világítanak mondjuk az „error” szavak... Rögtön tudjuk, hol van a baki, hova kell nézni!

Ezt tehát mentsük el a /_/P/KISS/0.0/sources könyvtárba, majd fordítsuk le:

gcc colored.c -o colored

Az elkészült colored nevű binárist pedig mozgassuk át a /_/P/KISS/0.0/bin

könyvtárba!