LINUX.ORG.RU

История изменений

Исправление LINUX-ORG-RU, (текущая версия) :

По поводу перезатираний уже сказали, поэтому просто сделаю по другому =)

dron@gnu:~$ gresource extract ./gtk.gresource /org/gnome/arc-theme/gtk-main-dark.css > ~/gtk.css
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <assert.h>

#define check(x,p) for(;!(x);puts(p),assert(x));

int main(int argc, char *argv[])
{
    FILE * css_file = fopen(argv[argc-1],"r");
    check(css_file,"Ошибка открытия файла");
    char fg_color[0x10] = {"color_not_found"}; bool has_fg = false;
    char bg_color[0x10] = {"color_not_found"}; bool has_bg = false;
    char cur_line[0xFF] = {0};
    while(fgets(cur_line,sizeof(cur_line),css_file))
    {
        if(!has_fg)
        {
           has_fg = (sscanf(cur_line,"@define-color fg_color #%15s;",fg_color) == 1);
        }
        if(!has_bg)
        {
           has_bg = (sscanf(cur_line,"@define-color bg_color #%15s;",bg_color) == 1);
        }
    }
    (has_fg) ? fg_color[strlen(fg_color)-1] = '\0' : 0;
    (has_bg) ? bg_color[strlen(bg_color)-1] = '\0' : 0;

    printf("fg:%s | bg:%s \n",fg_color,bg_color);
    return 0;
}
dron@gnu:~$ gcc test.c
dron@gnu:~$ ./a.out gtk.css
fg:D3DAE3 | bg:383C4A 
dron@gnu:~$ 

Исправление LINUX-ORG-RU, :

По поводу перезатираний уже сказали, поэтому просто сделаю по другому =)

dron@gnu:~$ gresource extract ./gtk.gresource /org/gnome/arc-theme/gtk-main-dark.css > ~/gtk.css
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <assert.h>

#define check(x,p) for(;!(x);puts(p),assert(x));

int main(int argc, char *argv[])
{
    FILE * css_file = fopen(argv[argc-1],"r");
    check(css_file,"Ошибка открытия файла");
    char fg_color[0x10] = {"color_not_found"}; bool has_fg = false;
    char bg_color[0x10] = {"color_not_found"}; bool has_bg = false;
    char cur_line[0xFF] = {0};
    while(fgets(cur_line,sizeof(cur_line),css_file))
    {
        if(!has_fg)
        {
           has_fg = (sscanf(cur_line,"@define-color fg_color #%s;",fg_color) == 1);
        }
        if(!has_bg)
        {
           has_bg = (sscanf(cur_line,"@define-color bg_color #%s;",bg_color) == 1);
        }
    }
    (has_fg) ? fg_color[strlen(fg_color)-1] = '\0' : 0;
    (has_bg) ? bg_color[strlen(bg_color)-1] = '\0' : 0;

    printf("fg:%s | bg:%s \n",fg_color,bg_color);
    return 0;
}
dron@gnu:~$ gcc test.c
dron@gnu:~$ ./a.out gtk.css
fg:D3DAE3 | bg:383C4A 
dron@gnu:~$ 

Исходная версия LINUX-ORG-RU, :

По поводу перезатираний уже сказали, поэтому просто сделаю по другому =)

dron@gnu:~$ gresource extract ./gtk.gresource /org/gnome/arc-theme/gtk-main-dark.css > ~/gtk.css
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <assert.h>

#define check(x,p) for(;!(x);puts(p),assert(x));

int main(int argc, char *argv[])
{
    FILE * css_file = fopen(argv[argc-1],"r");

    check(css_file,"Ошибка открытия файла");

    char fg_color[0x10] = {"color_not_found"}; bool has_fg = false;
    char bg_color[0x10] = {"color_not_found"}; bool has_bg = false;
    char cur_line[0xFF] = {0};

    while(fgets(cur_line,sizeof(cur_line),css_file))
    {
        if(!has_fg)
        {
           has_fg = (sscanf(cur_line,"@define-color fg_color #%s;",fg_color) == 1);
        }
        if(!has_bg)
        {
           has_bg = (sscanf(cur_line,"@define-color bg_color #%s;",bg_color) == 1);
        }
    }
    (has_fg) ? fg_color[strlen(fg_color)-1] = '\0' : 0;
    (has_bg) ? bg_color[strlen(bg_color)-1] = '\0' : 0;

    printf("fg:%s | bg:%s \n",fg_color,bg_color);
    return 0;
}

dron@gnu:~$ gcc test.c
dron@gnu:~$ ./a.out gtk.css
fg:D3DAE3 | bg:383C4A 
dron@gnu:~$