{"id":323,"date":"2014-10-03T11:13:53","date_gmt":"2014-10-03T10:13:53","guid":{"rendered":"http:\/\/zsteva.info\/?p=323"},"modified":"2014-10-03T11:13:53","modified_gmt":"2014-10-03T10:13:53","slug":"minimalna-implementacija-cppa","status":"publish","type":"post","link":"http:\/\/zsteva.info\/blog\/2014\/10\/minimalna-implementacija-cppa\/","title":{"rendered":"Minimalna implementacija CPPa"},"content":{"rendered":"<p>Za predprocesiranje ~\/.ssh\/config fajla koristim CPP (C Preprocessor). Ali na chromebooku nemam instaliran GCC (pa ni CPP), pa sam napisao minimalnu verziju CPPa u perlu.<\/p>\n<pre lang=\"perl\">\r\n#!\/usr\/bin\/perl -w\r\n\r\nuse strict;\r\nuse Data::Dumper;\r\n\r\nmy $vars = {};\r\nmy $state = [];\r\n\r\nwhile (<>) {\r\n        if (\/^#define\\s*([A-Za-z0-9_]*)\/) {\r\n                $vars->{$1} = 1;\r\n                next;\r\n        }\r\n        if (\/^#ifdef\\s*([A-Za-z0-9_]*)\/) {\r\n                push(@$state, $1);\r\n                next;\r\n        }\r\n        if (\/^#ifndef\\s*([A-Za-z0-9_]*)\/) {\r\n                push(@$state, '!'.$1);\r\n                next;\r\n        }\r\n        if (\/^#else\/) {\r\n                my $last = pop(@$state);\r\n                if ($last =~ \/^!(.*)$\/) { $last = $1; }\r\n                else { $last = '!' . $last; }\r\n                push(@$state, $last);\r\n                next;\r\n        }\r\n        if (\/^#endif\/) {\r\n                pop(@$state);\r\n                next;\r\n        }\r\n\r\n        my $cond = 1;\r\n        foreach my $c (@$state) {\r\n                if ($c =~ \/^!(.*)$\/) {\r\n                        if (defined($vars->{$1})) {\r\n                                $cond = 0;\r\n                                last;\r\n                        }\r\n                } elsif ($c =~ \/^(.*)$\/) {\r\n                        if (!defined($vars->{$1})) {\r\n                                $cond = 0;\r\n                                last;\r\n                        }\r\n                }\r\n        }\r\n        if ($cond) {\r\n                s,\/\/.*$,,;\r\n                print $_;\r\n        }\r\n}\r\n<\/pre>\n<p>download <a href='http:\/\/zsteva.info\/blog\/wp-content\/uploads\/2014\/10\/pcpp.pl_.txt'>pcpp.pl<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Za predprocesiranje ~\/.ssh\/config fajla koristim CPP (C Preprocessor). Ali na chromebooku nemam instaliran GCC (pa ni CPP), pa sam napisao minimalnu verziju CPPa u perlu. #!\/usr\/bin\/perl -w use strict; use Data::Dumper; my $vars = {}; my $state = []; while &hellip; <a href=\"http:\/\/zsteva.info\/blog\/2014\/10\/minimalna-implementacija-cppa\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[136,121,6,119],"tags":[139,130,122,138,37],"_links":{"self":[{"href":"http:\/\/zsteva.info\/blog\/wp-json\/wp\/v2\/posts\/323"}],"collection":[{"href":"http:\/\/zsteva.info\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/zsteva.info\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/zsteva.info\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/zsteva.info\/blog\/wp-json\/wp\/v2\/comments?post=323"}],"version-history":[{"count":7,"href":"http:\/\/zsteva.info\/blog\/wp-json\/wp\/v2\/posts\/323\/revisions"}],"predecessor-version":[{"id":331,"href":"http:\/\/zsteva.info\/blog\/wp-json\/wp\/v2\/posts\/323\/revisions\/331"}],"wp:attachment":[{"href":"http:\/\/zsteva.info\/blog\/wp-json\/wp\/v2\/media?parent=323"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/zsteva.info\/blog\/wp-json\/wp\/v2\/categories?post=323"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/zsteva.info\/blog\/wp-json\/wp\/v2\/tags?post=323"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}