IoCairoFontOptions *IoCairoFontOptions_rawClone(IoCairoFontOptions *proto) { IoCairoFontOptions *self = IoObject_rawClonePrimitive(proto); if (OPTIONS(proto)) IoObject_setDataPointer_(self, cairo_font_options_copy(OPTIONS(proto))); return self; }
int IoCairoFontOptions_compare(IoCairoFontOptions *self, IoCairoFontOptions *other) { cairo_font_options_t *options = OPTIONS(self); cairo_font_options_t *otherOptions = OPTIONS(other); if (!options && !otherOptions) return 1; if (!options || !otherOptions) return 0; return cairo_font_options_equal(options, otherOptions); }
IoObject *IoCairoFontOptions_merge(IoCairoFontOptions *self, IoObject *locals, IoMessage *m) { IoCairoFontOptions *other = IoMessage_locals_cairoFontOptionsArgAt_(m, locals, 0); cairo_font_options_merge(OPTIONS(self), IoCairoFontOptions_rawFontOptions(other)); CHECK_STATUS(self); return self; }
int main(int argc, char **argv) { FILE *infile; int64_t l; char buffer[512*3]; kum_6d6_header start_header[1], end_header[1]; int e; i18n_set_lang(getenv("LANG")); int outdated = tai_leapsecs_need_update(tai_now()); if (outdated) { fprintf(stderr, "%s", i18n->leapsec_outdated); } program = argv[0]; parse_options(&argc, &argv, OPTIONS( FLAG_CALLBACK('h', "help", help) )); if (argc != 2) help(0); infile = fopen(argv[1], "rb"); if (!infile) { e = errno; snprintf(buffer, sizeof(buffer), "/dev/%s", argv[1]); infile = fopen(buffer, "rb"); if (!infile) { fprintf(stderr, i18n->could_not_open_ss, argv[1], i18n_error(e)); exit(1); } } /* Drop root privileges if we had any. */ uid_t uid = getuid(); if (uid > 0 && setuid(uid) < 0) { fprintf(stderr, "%s", i18n->could_not_restore_uid); exit(1); } l = fread(buffer, 1, sizeof(buffer), infile); if (l < 1024 || kum_6d6_header_read(start_header, buffer) || kum_6d6_header_read(end_header, buffer + 512)) { /* Try to skip first 512 bytes. */ if (l >= 3 * 512 && kum_6d6_header_read(start_header, buffer + 512) == 0 && kum_6d6_header_read(end_header, buffer + 1024) == 0) { } else { fprintf(stderr, "%s", i18n->malformed_6d6_header); exit(1); } } /* Show all the info. */ kum_6d6_show_info(stdout, start_header, end_header); return 0; }
bool Parser::CMDLINE() { int pos = 0; if (!OPTIONS(pos)) return false; Fragment f; TEXT(pos, f); // should be at the end of the string now if (pos != (int) strlen(text)) return false; return true; }
int main(int argc, char **argv) { int flag_all = 0; int flag_debug = 0; char *input_file = ""; char *log_level = ""; int i; program = argv[0]; parse_options(&argc, &argv, OPTIONS( FLAG('a', "all", flag_all, 1), FLAG('d', "debug", flag_debug, 1), PARAMETER('i', "input-file", input_file), PARAMETER_DEFAULT('l', "log-level", log_level, "error"), FLAG_CALLBACK('h', "help", help), FLAG_CALLBACK('v', 0, verbose) )); for (i = 0; i <= argc; ++i) { if (argv[i]) printf("argv[%d] = \"%s\";\n", i, argv[i]); else printf("argv[%d] = 0;\n", i); } printf( " All: %s\n" " Debug: %s\n" "Verbosity: %d\n" " Input: '%s'\n" "Log Level: '%s'\n", ON(flag_all), ON(flag_debug), verbosity, input_file, log_level ); return 0; }
void BlogHandler::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response) { response.setChunkedTransferEncoding(true); response.setContentType("text/html"); #line 6 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" SESSION std::ostream& responseStream = response.send(); responseStream << ""; responseStream << "\n"; responseStream << ""; responseStream << "\n"; responseStream << ""; responseStream << "\n"; responseStream << ""; responseStream << "\n"; responseStream << "\n"; responseStream << "\t"; responseStream << "\n"; responseStream << "\n"; responseStream << "\t"; #line 8 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" TILE_BEGIN("head") responseStream << "\n"; responseStream << "\t\t"; // begin include src/view/tile/head.html responseStream << "\n"; responseStream << "\t<meta charset=\"utf-8\">\n"; responseStream << "\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\" />\n"; responseStream << "\t<script type=\"text/javascript\">window.suggestmeyes_loaded = true;</script>\n"; responseStream << "\t<title>Main Page</title>\n"; responseStream << "\t<link rel=\"stylesheet\" type=\"text/css\" href=\"css/style.css\">\n"; responseStream << "\t<!--<meta http-equiv=\"refresh\" content=\"1\">-->\n"; responseStream << ""; // end include src/view/tile/head.html responseStream << "\n"; responseStream << "\t\t<link rel=\"stylesheet\" type=\"text/css\" href=\"markitup/skins/markitup/style.css\" />\n"; responseStream << "\t\t<link rel=\"stylesheet\" type=\"text/css\" href=\"markitup/sets/bbcode/style.css\" />\n"; responseStream << "\t\t<script type=\"text/javascript\" src=\"js/jquery-1.4.3.min.js\"></script>\n"; responseStream << "\t\t<script type=\"text/javascript\" src=\"markitup/jquery.markitup.js\"></script>\n"; responseStream << "\t\t<script type=\"text/javascript\" src=\"markitup/sets/bbcode/set.js\"></script>\n"; responseStream << "\t\t<script language=\"javascript\">\n"; responseStream << "\t\t$(document).ready(function()\t{\n"; responseStream << "\t\t\t$('#bbcode_blog').markItUp(myBbcodeSettings);\n"; responseStream << "\t\t\t$('#emoticons a').click(function() {\n"; responseStream << "\t\t\t\temoticon = $(this).attr(\"title\");\n"; responseStream << "\t\t\t\t$.markItUp( { replaceWith:emoticon } );\n"; responseStream << "\t\t\t});\n"; responseStream << "\t\t});\n"; responseStream << "\t\t</script>\n"; responseStream << "\t"; #line 24 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" TILE_END responseStream << "\n"; responseStream << "\n"; responseStream << "\t"; #line 26 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" TILE_BEGIN("topbar") responseStream << ""; // begin include src/view/tile/topbar.html responseStream << "\n"; responseStream << "\t"; #line 2 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/tile/topbar.html" IF(user) responseStream << "\n"; responseStream << "\t\t<div id=\"session\">\n"; responseStream << "\t\t\t<span class=\"topbar\">\n"; responseStream << "\t\t\t\t<a class=\"topbar\" href=\"/User\"><span class=\"topbar\">\n"; responseStream << "\t\t\t\t\t"; #line 6 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/tile/topbar.html" IF(user.group() == user.ADMIN) responseStream << "#"; #line 6 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/tile/topbar.html" responseStream << (user.username()); responseStream << "#"; #line 6 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/tile/topbar.html" ELSE responseStream << "["; #line 6 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/tile/topbar.html" responseStream << (user.username()); responseStream << "]"; #line 6 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/tile/topbar.html" ENDIF responseStream << "\n"; responseStream << "\t\t\t\t</span></a>\n"; responseStream << "\t\t\t\t<a class=\"topbar\" href=\"/*logout\">Sign out</a>\n"; responseStream << "\t\t\t</span>\n"; responseStream << "\t\t</div>\n"; responseStream << "\t"; #line 11 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/tile/topbar.html" ELSE responseStream << "\n"; responseStream << "\t\t<script type=\"text/javascript\"> function submitSigninForm() { document.forms[\"signinForm\"].submit(); } </script>\n"; responseStream << "\t\t<form id=\"signinForm\" class=\"ignore\" method=\"POST\" action=\"*login\">"; #line 13 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/tile/topbar.html" responseStream << (CSRF); responseStream << "\n"; responseStream << "\t\t\t<div id=\"session\">\n"; responseStream << "\t\t\t\t<span class=\"topbar\">\n"; responseStream << "\t\t\t\t\t<input class=\"topbar\" type=\"text\" "; #line 16 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/tile/topbar.html" responseStream << (NAME(username)); responseStream << " placeholder=\"Username...\" style=\"width: 100px;\" onkeypress=\"if(event.keyCode==13) submitSigninForm();\">\n"; responseStream << "\t\t\t\t\t<input class=\"topbar\" type=\"password\" "; #line 17 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/tile/topbar.html" responseStream << (NAME(password)); responseStream << " placeholder=\"Password...\" style=\"width: 100px;\" onkeypress=\"if(event.keyCode==13) submitSigninForm();\">\n"; responseStream << "\t\t\t\t\t<!--<a class=\"topbar\" href=\"/Login\">Sign In</a>-->\n"; responseStream << "\t\t\t\t\t<a class=\"topbar\" href=\"javascript:submitSigninForm()\">Log in</a>\n"; responseStream << "\t\t\t\t\t<a class=\"topbar\" href=\"/Registration\">Sign up</a>\n"; responseStream << "\t\t\t\t</span>\n"; responseStream << "\t\t\t</div>\n"; responseStream << "\t\t</form>\n"; responseStream << "\t"; #line 24 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/tile/topbar.html" ENDIF responseStream << "\n"; responseStream << ""; // end include src/view/tile/topbar.html responseStream << ""; #line 26 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" TILE_END responseStream << "\n"; responseStream << "\t"; #line 27 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" TILE_BEGIN("header") responseStream << ""; // begin include src/view/tile/header.html responseStream << "\n"; responseStream << "\t<a id=\"logo\" href=\"/\">\n"; responseStream << "\t\t<img src=\"/images/logo.png\" alt=\"Stack Overflow\" />\n"; responseStream << "\t</a>\n"; responseStream << "\t<script type=\"text/javascript\"> function submitSearchForm() { document.forms[\"searchForm\"].submit(); } </script>\n"; responseStream << "\t<form id=\"searchForm\" class=\"ignore\" method=\"GET\" action=\"*search\">\n"; responseStream << "\t\t<div id=\"search\">\n"; responseStream << "\t\t\t<span class=\"toolbar\">\n"; responseStream << "\t\t\t\t<input class=\"search\" type=\"text\" "; #line 9 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/tile/header.html" responseStream << (NAME(query)); responseStream << " placeholder=\"Search...\" style=\"width: 170px;\" onkeypress=\"if(event.keyCode==13) submitSearchForm();\">\n"; responseStream << "\t\t\t\t<a class=\"toolbar\" href=\"javascript:submitSearchForm()\">Find</a>\n"; responseStream << "\t\t\t</span>\n"; responseStream << "\t\t</div>\n"; responseStream << "\t</form>\t\n"; responseStream << ""; // end include src/view/tile/header.html responseStream << ""; #line 27 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" TILE_END responseStream << "\n"; responseStream << "\t"; #line 28 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" TILE_BEGIN("menu") responseStream << ""; // begin include src/view/tile/menu.html responseStream << "\n"; responseStream << "\t<ul id=\"menu\">\n"; responseStream << "\t\t"; #line 3 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/tile/menu.html" FOREACH(entry, me.menu()) responseStream << "\n"; responseStream << "\t\t\t<li><a href=\""; #line 4 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/tile/menu.html" responseStream << (entry.url); responseStream << "\" "; #line 4 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/tile/menu.html" responseStream << (me.checkPath(entry.url) ? "class='active'" : ""); responseStream << "><span>"; #line 4 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/tile/menu.html" responseStream << (entry.title); responseStream << "</span></a></li>\n"; responseStream << "\t\t"; #line 5 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/tile/menu.html" ENDFOR responseStream << "\n"; responseStream << "\t</ul>\n"; responseStream << ""; // end include src/view/tile/menu.html responseStream << ""; #line 28 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" TILE_END responseStream << "\n"; responseStream << "\n"; responseStream << "\t"; #line 30 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" TILE_BEGIN("content") responseStream << "\n"; responseStream << "\n"; responseStream << "\t\t<!-- Create categories chain -->\n"; responseStream << "\t\t<a class=\"categoryChain\" href=\""; #line 33 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (page.path()); responseStream << "?c=0\">root</a>\n"; responseStream << "\t\t"; #line 34 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" FOREACHI(cat, me.categoryChain) responseStream << "\n"; responseStream << "\t\t\t : <a class=\"categoryChain\" href=\""; #line 35 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (page.path()); responseStream << "?c="; #line 35 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (cat.id()); responseStream << "\">"; #line 35 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (me.format(cat.title())); responseStream << "</a>\n"; responseStream << "\t\t"; #line 36 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" ENDFOR responseStream << "\n"; responseStream << "\n"; responseStream << "\t\t<!-- Sorting method selector -->\n"; responseStream << "\t\t"; #line 39 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" COPY_BEGIN("sortingMethodSelector") responseStream << "\n"; responseStream << "\t\t\t<div class=\"userCol1\">Sort by</div><div class=\"userCol2\">\n"; responseStream << "\t\t\t\t<select onchange=\"location = '*paginate?s='.concat(this.value);\">\n"; responseStream << "\t\t\t\t\t"; #line 42 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" OPTIONS(me.sortModes) responseStream << "\n"; responseStream << "\t\t\t\t</select>\n"; responseStream << "\t\t\t</div>\n"; responseStream << "\t\t"; #line 45 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" COPY_END responseStream << "\n"; responseStream << "\n"; responseStream << "\t\t<!-- Paginator -->\n"; responseStream << "\t\t"; #line 48 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" COPY_BEGIN("paginator") responseStream << "\n"; responseStream << "\t\t\t<div class=\"userCol1\">\n"; responseStream << "\t\t\t\t<a class=\"paginatorChain\" href=\"*paginate?p="; #line 50 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (me.paginator.first()); responseStream << "\">First</a>\n"; responseStream << "\t\t\t\t<a class=\"paginatorChain\" href=\"*paginate?p="; #line 51 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (me.paginator.prev()); responseStream << "\">Prev</a>\n"; responseStream << "\t\t\t\t"; #line 52 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" FOREACH(ind, me.paginator.indices) responseStream << "\n"; responseStream << "\t\t\t\t\t<a class=\"paginatorChain"; #line 53 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (ind==me.paginator.page()?" paginatorCurrent":""); responseStream << "\" href=\"*paginate?p="; #line 53 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (ind); responseStream << "\">"; #line 53 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (ind); responseStream << "</a>\n"; responseStream << "\t\t\t\t"; #line 54 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" ENDFOR responseStream << "\n"; responseStream << "\t\t\t\t<a class=\"paginatorChain\" href=\"*paginate?p="; #line 55 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (me.paginator.next()); responseStream << "\">Next</a>\n"; responseStream << "\t\t\t\t<a class=\"paginatorChain\" href=\"*paginate?p="; #line 56 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (me.paginator.last()); responseStream << "\">Last</a>\n"; responseStream << "\t\t\t</div>\n"; responseStream << "\t\t"; #line 58 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" COPY_END responseStream << "\n"; responseStream << "\n"; responseStream << "\t\t<!-- Emoticons -->\n"; responseStream << "\t\t"; #line 61 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" COPY_BEGIN("emoticons") responseStream << "\n"; responseStream << "\t\t\t<div id=\"emoticons\">\n"; responseStream << "\t\t\t\t"; #line 63 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" FOREACH(emo, core::server().conf().emoticons()) responseStream << "\n"; responseStream << "\t\t\t\t\t<a href=\"#\" onclick=\"return false;\" title=\""; #line 64 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (emo.name); responseStream << "\"><img src=\""; #line 64 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (emo.src); responseStream << "\" /></a>\n"; responseStream << "\t\t\t\t"; #line 65 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" ENDFOR responseStream << "\n"; responseStream << "\t\t\t</div>\n"; responseStream << "\t\t"; #line 67 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" COPY_END responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "\t\t<!-- Search Results mode -->\n"; responseStream << "\t\t"; #line 71 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" IF(me.mode() == me.MODE_SEARCH) responseStream << "\n"; responseStream << "\t\t\t"; #line 72 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" IF(me.searchResults->size()) responseStream << "\n"; responseStream << "\t\t\t\t<h1>Search Results:</h1>\n"; responseStream << "\n"; responseStream << "\t\t\t\t<!-- Add sorting method selector -->\n"; responseStream << "\t\t\t\t"; #line 76 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" PASTE("sortingMethodSelector") responseStream << "\n"; responseStream << "\n"; responseStream << "\t\t\t\t<!-- Print list of Search Results -->\n"; responseStream << "\t\t\t\t"; #line 79 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" FOREACH(blog, me.searchResults) responseStream << "\n"; responseStream << "\t\t\t\t\t<div class=\"blogListRow\">\n"; responseStream << "\t\t\t\t\t\t<a class=\"postRowWhole\" href=\""; #line 81 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (page.path()); responseStream << "?b="; #line 81 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (blog.id()); responseStream << "\">"; #line 81 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (blog.title()); responseStream << "</a>\n"; responseStream << "\t\t\t\t\t</div>\n"; responseStream << "\t\t\t\t"; #line 83 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" ENDFOR responseStream << "\n"; responseStream << "\t\t\t"; #line 84 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" ELSE responseStream << "\n"; responseStream << "\t\t\t\t<h1>Nothing Found</h1>\n"; responseStream << "\t\t\t\tSorry, but nothing matched your search criteria.\n"; responseStream << "\t\t\t"; #line 87 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" ENDIF responseStream << "\n"; responseStream << "\n"; responseStream << "\t\t\t<!-- Show more results button -->\n"; responseStream << "\t\t\t"; #line 90 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" IF(me.paginator.hasMore()) responseStream << "\n"; responseStream << "\t\t\t\t<form method=\"POST\" action=\"*paginate\">"; #line 91 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (CSRF); responseStream << "\n"; responseStream << "\t\t\t\t\t<div class=\"userCol1\"><input type=\"submit\" value=\"Show More\"></div><div class=\"userCol2\"></div>\n"; responseStream << "\t\t\t\t</form>\n"; responseStream << "\t\t\t"; #line 94 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" ENDIF responseStream << "\n"; responseStream << "\t\t"; #line 95 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" ENDIF responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "\t\t<!-- Blog mode -->\n"; responseStream << "\t\t"; #line 99 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" IF(me.mode() == me.MODE_BLOG) responseStream << "\n"; responseStream << "\t\t\t<!-- Add blog node to category chain -->\n"; responseStream << "\t\t\t : "; #line 101 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (me.format(me.blog.title())); responseStream << "\n"; responseStream << "\n"; responseStream << "\t\t\t<!-- Pring blog title, date, username, rating and content -->\n"; responseStream << "\t\t\t<h1>"; #line 104 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (me.format(me.blog.title())); responseStream << "</h1>\n"; responseStream << "\t\t\t<i><b>Posted: </b>"; #line 105 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (core::to_string(me.blog.date())); responseStream << " by "; #line 105 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (me.blog.post().user().username()); responseStream << "</i>\n"; responseStream << "\t\t\t<br /><a class=\"postRowValue\" href=\"*ratePost?p="; #line 106 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (me.blog.post().id()); responseStream << "\">"; #line 106 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (me.blog.post().rated() ? "⤵" : "⤴"); responseStream << "+"; #line 106 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (me.blog.post().rating()); responseStream << "</a>\n"; responseStream << "\t\t\t"; #line 107 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" IF(user.group() == user.ADMIN) responseStream << "\n"; responseStream << "\t\t\t\t<div>\n"; responseStream << "\t\t\t\t\t<a class=\"postRowOptionR\" href=\"*removeBlog?b="; #line 109 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (me.blog.id()); responseStream << "\" onclick=\n"; responseStream << "\t\t\t\t\t\t\"return confirm('Are you sure you want to remove this blog?');\"><i>Remove</i></a>\n"; responseStream << "\t\t\t\t\t<a class=\"postRowOptionR\" href=\"#\" onclick=\"createEditBlogBlock(this.parentNode, "; #line 111 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (me.blog.id()); responseStream << ", "; #line 111 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (me.blog.post().id()); responseStream << "); return false;\"><i>Edit</i></a>\n"; responseStream << "\t\t\t\t</div>\n"; responseStream << "\t\t\t"; #line 113 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" ENDIF responseStream << "\n"; responseStream << "\t\t\t<br />"; #line 114 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (me.format(me.blog.post().content(), true)); responseStream << "\n"; responseStream << "\n"; responseStream << "\t\t\t<!-- Add sorting method selector -->\n"; responseStream << "\t\t\t"; #line 117 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" PASTE("sortingMethodSelector") responseStream << "\n"; responseStream << "\n"; responseStream << "\t\t\t<!-- Add Comment button -->\n"; responseStream << "\t\t\t<form method=\"POST\" action=\"#\">"; #line 120 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (CSRF); responseStream << "\n"; responseStream << "\t\t\t\t<div class=\"userCol1\"><input type=\"submit\" value=\"Add Comment\" onclick=\"createReplyBlock(null, 0, ''); deleteThis(this); return false;\"></div>\n"; responseStream << "\t\t\t\t<div class=\"userCol2\"></div>\n"; responseStream << "\t\t\t</form>\n"; responseStream << "\n"; responseStream << "\t\t\t<!-- Container for cloning Reply Section into -->\n"; responseStream << "\t\t\t<div id=\"replyBlockRoot\"></div>\n"; responseStream << "\n"; responseStream << "\t\t\t<!-- Print Comments tree -->\n"; responseStream << "\t\t\t"; #line 129 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" TREE_FOREACH(post, me.posts) responseStream << "\n"; responseStream << "\t\t\t\t<div class='"; #line 130 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (post.parentId() ? "postChildRow" : "postRow"); responseStream << "'>\n"; responseStream << "\t\t\t\t\t<i><b>Posted: </b>"; #line 131 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (core::to_string(post.date())); responseStream << " by "; #line 131 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (post.user().username()); responseStream << "</i>\n"; responseStream << "\t\t\t\t\t<br />"; #line 132 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (me.format(post.content())); responseStream << "\n"; responseStream << "\t\t\t\t\t<br /><a class=\"postRowValue\" href=\"*ratePost?p="; #line 133 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (post.id()); responseStream << "\">"; #line 133 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (post.rated() ? "⤵" : "⤴"); responseStream << "+"; #line 133 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (post.rating()); responseStream << "</a>\n"; responseStream << "\t\t\t\t\t<a class=\"postRowValue\" href=\"#\" onclick=\"createReplyBlock(this.parentNode, "; #line 134 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (post.id()); responseStream << ", '"; #line 134 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (post.user().username()); responseStream << "'); return false;\"><i>Reply</i></a>\n"; responseStream << "\n"; responseStream << "\t\t\t\t\t"; #line 136 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" IF(user.id() == post.user().id() || user.group() == user.ADMIN) responseStream << "\n"; responseStream << "\t\t\t\t\t\t<div>\n"; responseStream << "\t\t\t\t\t\t\t<a class=\"postRowOptionR\" href=\"*removePost?p="; #line 138 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (post.id()); responseStream << "\" onclick=\n"; responseStream << "\t\t\t\t\t\t\t\t\"return confirm('Are you sure you want to remove this comment?');\"><i>Remove</i></a>\n"; responseStream << "\t\t\t\t\t\t\t<a class=\"postRowOptionR\" href=\"#\" onclick=\"createEditBlock(this.parentNode, "; #line 140 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (post.id()); responseStream << "); return false;\"><i>Edit</i></a>\n"; responseStream << "\t\t\t\t\t\t</div>\n"; responseStream << "\t\t\t\t\t"; #line 142 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" ENDIF responseStream << "\n"; responseStream << "\n"; responseStream << "\t\t\t\t\t"; #line 144 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" TREE_CHILDREN responseStream << "\n"; responseStream << "\t\t\t\t</div>\n"; responseStream << "\t\t\t"; #line 146 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" TREE_ENDFOR responseStream << "\n"; responseStream << "\n"; responseStream << "\t\t\t<!-- Show more comments button -->\n"; responseStream << "\t\t\t"; #line 149 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" IF(me.paginator.hasMore()) responseStream << "\n"; responseStream << "\t\t\t\t<form method=\"POST\" action=\"*paginate\">"; #line 150 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (CSRF); responseStream << "\n"; responseStream << "\t\t\t\t\t<div class=\"userCol1\"><input type=\"submit\" value=\"Show More\"></div><div class=\"userCol2\"></div>\n"; responseStream << "\t\t\t\t</form>\n"; responseStream << "\t\t\t"; #line 153 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" ENDIF responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "\t\t\t<!-- Reply Section template (Invisible, for clonning only) -->\n"; responseStream << "\t\t\t<div id=\"replyBlock\" style=\"display: none;\">\n"; responseStream << "\t\t\t\t<form method=\"POST\" action=\"*newPost\">"; #line 158 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (CSRF); responseStream << "\n"; responseStream << "\t\t\t\t\t<input type=\"hidden\" class=\"ParentPostIdPar\" "; #line 159 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (NAME(pp)); responseStream << ">\n"; responseStream << "\t\t\t\t\t"; #line 160 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" IF(!user) responseStream << "<div class=\"userCol1\">Email Address:</div><div class=\"userCol2\"><input type=\"text\" "; #line 160 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (NAME(email)); responseStream << "></div>"; #line 160 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" ENDIF responseStream << "\n"; responseStream << "\t\t\t\t\t<div class=\"userStatus\"><textarea name=\"content\" class=\"ParentPostContent\">"; #line 161 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (me["content"]); responseStream << "</textarea></div>\n"; responseStream << "\t\t\t\t\t<div class=\"userCol1\"><!-- Add Emoticons -->"; #line 162 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" PASTE("emoticons") responseStream << "</div>\n"; responseStream << "\t\t\t\t\t<div class=\"userCol2\"><input type=\"submit\" class=\"ParentPostCancel\" onclick=\"deleteHtmlBlock(this); return false;\" value=\"Cancel\">\n"; responseStream << "\t\t\t\t\t\t<input type=\"submit\" value=\"Add Comment\"></div>\n"; responseStream << "\t\t\t\t</form>\n"; responseStream << "\t\t\t\t<div class=\"userStatus\"><span class=\"userError\">"; #line 166 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (me["status"]); responseStream << "</span></div>\n"; responseStream << "\t\t\t</div>\n"; responseStream << "\n"; responseStream << "\t\t\t<!-- Edit Comment Section template (Invisible, for clonning only) -->\n"; responseStream << "\t\t\t<div id=\"editBlock\" style=\"display: none;\">\n"; responseStream << "\t\t\t\t<form method=\"POST\" action=\"*editPost\">"; #line 171 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (CSRF); responseStream << "\n"; responseStream << "\t\t\t\t\t<input type=\"hidden\" class=\"ParentPostIdPar\" "; #line 172 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (NAME(p)); responseStream << ">\n"; responseStream << "\t\t\t\t\t<div class=\"userStatus\"><textarea name=\"content\" class=\"ParentPostContent\">"; #line 173 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (me["content"]); responseStream << "</textarea></div>\n"; responseStream << "\t\t\t\t\t<div class=\"userCol1\"><!-- Add Emoticons -->"; #line 174 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" PASTE("emoticons") responseStream << "</div>\n"; responseStream << "\t\t\t\t\t<div class=\"userCol2\"><input type=\"submit\" class=\"ParentPostCancel\" onclick=\"deleteHtmlBlock(this); return false;\" value=\"Cancel\">\n"; responseStream << "\t\t\t\t\t\t<input type=\"submit\" value=\"Save\"></div>\n"; responseStream << "\t\t\t\t</form>\n"; responseStream << "\t\t\t\t<div class=\"userStatus\"><span class=\"userError\">"; #line 178 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (me["status"]); responseStream << "</span></div>\n"; responseStream << "\t\t\t</div>\n"; responseStream << "\n"; responseStream << "\t\t\t<!-- Edit Blog Section template (Invisible, for clonning only) -->\n"; responseStream << "\t\t\t<div id=\"editBlogBlock\" style=\"display: none;\">\n"; responseStream << "\t\t\t\t<form method=\"POST\" action=\"*editBlog\">"; #line 183 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (CSRF); responseStream << "\n"; responseStream << "\t\t\t\t\t<input type=\"hidden\" class=\"ParentPostIdPar\" "; #line 184 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (NAME(b)); responseStream << ">\n"; responseStream << "\t\t\t\t\t<div class=\"userCol1\">Title:</div><div class=\"userCol2\"><input type=\"text\" class=\"EditBlogTitle\" "; #line 185 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (NAME(title)); responseStream << "></div>\n"; responseStream << "\t\t\t\t\t<div class=\"userStatus\"><textarea name=\"content\" class=\"ParentPostContent\">"; #line 186 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (me["content"]); responseStream << "</textarea></div>\n"; responseStream << "\t\t\t\t\t<div class=\"userCol1\"><!-- Add Emoticons -->"; #line 187 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" PASTE("emoticons") responseStream << "</div>\n"; responseStream << "\t\t\t\t\t<div class=\"userCol2\"><input type=\"submit\" class=\"ParentPostCancel\" onclick=\"deleteHtmlBlock(this); return false;\" value=\"Cancel\">\n"; responseStream << "\t\t\t\t\t\t<input type=\"submit\" value=\"Save\"></div>\n"; responseStream << "\t\t\t\t</form>\n"; responseStream << "\t\t\t\t<div class=\"userStatus\"><span class=\"userError\">"; #line 191 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (me["status"]); responseStream << "</span></div>\n"; responseStream << "\t\t\t</div>\n"; responseStream << "\t\t"; #line 193 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" ENDIF responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "\t\t<!-- Blog/Category listing mode -->\n"; responseStream << "\t\t"; #line 197 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" IF(me.mode() == me.MODE_CATEGORY) responseStream << "\n"; responseStream << "\t\t\t<p>\n"; responseStream << "\t\t\t\t<!-- Add sorting method selector -->\n"; responseStream << "\t\t\t\t"; #line 200 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" PASTE("sortingMethodSelector") responseStream << "\n"; responseStream << "\n"; responseStream << "\t\t\t\t<!-- Draw paginator -->\n"; responseStream << "\t\t\t\t"; #line 203 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" PASTE("paginator") responseStream << "\n"; responseStream << "\n"; responseStream << "\t\t\t\t<!-- Print list of Categories -->\n"; responseStream << "\t\t\t\t"; #line 206 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" FOREACH(cat, me.categories) responseStream << "\n"; responseStream << "\t\t\t\t\t<div class=\"categoryListRow\">\n"; responseStream << "\t\t\t\t\t\t<a class=\"postRowWhole\" href=\""; #line 208 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (page.path()); responseStream << "?c="; #line 208 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (cat.id()); responseStream << "\">"; #line 208 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (me.format(cat.title())); responseStream << "</a>\n"; responseStream << "\t\t\t\t\t\t"; #line 209 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" IF(user.group() == user.ADMIN) responseStream << "\n"; responseStream << "\t\t\t\t\t\t\t<a class=\"postRowOption\" href=\"*removeCategory?c="; #line 210 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (cat.id()); responseStream << "\" onclick=\n"; responseStream << "\t\t\t\t\t\t\t\t\"return confirm('Are you sure you want to remove this category?');\"><i>Remove</i></a>\n"; responseStream << "\t\t\t\t\t\t"; #line 212 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" ENDIF responseStream << "\n"; responseStream << "\t\t\t\t\t</div>\n"; responseStream << "\t\t\t\t"; #line 214 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" ENDFOR responseStream << "\n"; responseStream << "\n"; responseStream << "\t\t\t\t<!-- Print list of Blogs -->\n"; responseStream << "\t\t\t\t"; #line 217 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" FOREACH(blog, me.blogs) responseStream << "\n"; responseStream << "\t\t\t\t\t<div class=\"blogListRow\">\n"; responseStream << "\t\t\t\t\t\t<a class=\"postRowWhole\" href=\""; #line 219 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (page.path()); responseStream << "?b="; #line 219 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (blog.id()); responseStream << "\">"; #line 219 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (me.format(blog.title())); responseStream << "</a>\n"; responseStream << "\t\t\t\t\t\t"; #line 220 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" IF(user.group() == user.ADMIN) responseStream << "\n"; responseStream << "\t\t\t\t\t\t\t<a class=\"postRowOption\" href=\"*removeBlog?b="; #line 221 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (blog.id()); responseStream << "\" onclick=\n"; responseStream << "\t\t\t\t\t\t\t\t\"return confirm('Are you sure you want to remove this blog?');\"><i>Remove</i></a>\n"; responseStream << "\t\t\t\t\t\t"; #line 223 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" ENDIF responseStream << "\n"; responseStream << "\t\t\t\t\t</div>\n"; responseStream << "\t\t\t\t"; #line 225 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" ENDFOR responseStream << "\n"; responseStream << "\n"; responseStream << "\t\t\t\t<!-- Draw paginator -->\n"; responseStream << "\t\t\t\t"; #line 228 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" PASTE("paginator") responseStream << "\n"; responseStream << "\t\t\t</p>\n"; responseStream << "\n"; responseStream << "\t\t\t<!-- New Blog and New Category Sections -->\n"; responseStream << "\t\t\t"; #line 232 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" IF(user && user.group() == user.ADMIN) responseStream << "\n"; responseStream << "\t\t\t\t"; #line 233 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" IF(!me.hasBlogs) responseStream << "\n"; responseStream << "\t\t\t\t\t<br /><br /><br />\n"; responseStream << "\t\t\t\t\t<form method=\"POST\" action=\"*newCategory\">"; #line 235 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (CSRF); responseStream << "\n"; responseStream << "\t\t\t\t\t\t<div class=\"userCol1\">Title:</div><div class=\"userCol2\"><input type=\"text\" "; #line 236 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (NAME(title)); responseStream << "></div>\n"; responseStream << "\t\t\t\t\t\t<div class=\"userCol1\"></div><div class=\"userCol2\"><input type=\"submit\" value=\"Create new category\"></div>\n"; responseStream << "\t\t\t\t\t</form>\n"; responseStream << "\t\t\t\t"; #line 239 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" ENDIF responseStream << "\n"; responseStream << "\n"; responseStream << "\t\t\t\t"; #line 241 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" IF(!me.hasCategories) responseStream << "\n"; responseStream << "\t\t\t\t\t<br /><br /><br />\n"; responseStream << "\t\t\t\t\t<!--<textarea id=\"bbcode\" cols=\"80\" rows=\"20\"></textarea>-->\n"; responseStream << "\t\t\t\t\t<form method=\"POST\" action=\"*newBlog\">"; #line 244 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (CSRF); responseStream << "\n"; responseStream << "\t\t\t\t\t\t<div class=\"userCol1\">Title:</div><div class=\"userCol2\"><input type=\"text\" "; #line 245 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (NAME(title)); responseStream << "></div>\n"; responseStream << "\t\t\t\t\t\t<div class=\"userStatus\"><textarea id=\"bbcode_blog\" name=\"content\">"; #line 246 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (me["content"]); responseStream << "</textarea></div>\n"; responseStream << "\t\t\t\t\t\t<div class=\"userCol1\"><!-- Add Emoticons -->"; #line 247 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" PASTE("emoticons") responseStream << "</div>\n"; responseStream << "\t\t\t\t\t\t<div class=\"userCol2\"><input type=\"submit\" value=\"Create new blog\"></div>\n"; responseStream << "\t\t\t\t\t</form>\n"; responseStream << "\t\t\t\t"; #line 250 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" ENDIF responseStream << "\n"; responseStream << "\t\t\t\t<div class=\"userStatus\"><span class=\"userError\">"; #line 251 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" responseStream << (me["status"]); responseStream << "</span></div>\n"; responseStream << "\t\t\t"; #line 252 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" ENDIF responseStream << "\n"; responseStream << "\t\t"; #line 253 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" ENDIF responseStream << "\n"; responseStream << "\n"; responseStream << "\t"; #line 255 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" TILE_END responseStream << "\n"; responseStream << "\n"; responseStream << "\t"; #line 257 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" TILE_BEGIN("navigation") responseStream << ""; // begin include src/view/tile/navigation.html responseStream << "\n"; responseStream << "\t<div id=\"toolbar\">\n"; responseStream << "\t</div>\n"; responseStream << "\t<ul id=\"list\">\n"; responseStream << "\t\t"; #line 5 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/tile/navigation.html" FOREACH(entry, me.sidebar()) responseStream << "\n"; responseStream << "\t\t\t<li><a href=\""; #line 6 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/tile/navigation.html" responseStream << (entry.url); responseStream << "\" "; #line 6 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/tile/navigation.html" responseStream << (me.checkPath(entry.url) ? "class='active'" : ""); responseStream << "><span>"; #line 6 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/tile/navigation.html" responseStream << (entry.title); responseStream << "</span></a></li>\n"; responseStream << "\t\t"; #line 7 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/tile/navigation.html" ENDFOR responseStream << "\n"; responseStream << "\t</ul>\n"; responseStream << ""; // end include src/view/tile/navigation.html responseStream << ""; #line 257 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" TILE_END responseStream << "\n"; responseStream << "\t"; #line 258 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" TILE_BEGIN("footer") responseStream << ""; // begin include src/view/tile/footer.html responseStream << "\t\n"; responseStream << "\t<span>Copyright © 2015 [There could be your company].</span>\n"; responseStream << ""; // end include src/view/tile/footer.html responseStream << ""; #line 258 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" TILE_END responseStream << "\n"; responseStream << "\n"; responseStream << "\t"; #line 260 "/media/DATA_1/_/Data/Core/Developing/WebServer/PocoBlog/src/view/Blog.c" TEMPLATE("html/template.html") responseStream << "\n"; responseStream << ""; }
int main(int argc, char **argv) { char *log_file = NULL; char *queue_dir = NULL; char *list[2]; int num_to_send = DEFAULT_NUM, chunk; int fd; FTS *fts; FTSENT *ftsent; int piece, npieces; char filename[PATH_MAX]; err_prog_name(argv[0]); OPTIONS("[-l log] [-n num] queuedir") NUMBER('n', num_to_send) STRING('l', log_file) ENDOPTS if (argc != 2) usage(); if (log_file) err_set_log(log_file); queue_dir = argv[1]; list[0] = queue_dir; list[1] = NULL; fts = fts_open(list, FTS_PHYSICAL|FTS_COMFOLLOW, fts_sort); if (fts == NULL) { err("fts failed on `%s'", queue_dir); exit(1); } ftsent = fts_read(fts); if (ftsent == NULL || ftsent->fts_info != FTS_D) { err("not a directory: %s", queue_dir); exit(1); } ftsent = fts_children(fts, 0); if (ftsent == NULL && errno) { err("*ftschildren failed"); exit(1); } for (chunk = 1; ftsent != NULL; ftsent = ftsent->fts_link) { /* * Skip non-files and ctm_smail tmp files (ones starting with `.') */ if (ftsent->fts_info != FTS_F || ftsent->fts_name[0] == '.') continue; sprintf(filename, "%s/%s", queue_dir, ftsent->fts_name); fd = open(filename, O_RDONLY); if (fd < 0) { err("*open: %s", filename); exit(1); } if (run_sendmail(fd)) exit(1); close(fd); if (unlink(filename) < 0) { err("*unlink: %s", filename); exit(1); } /* * Deduce the delta, piece number, and number of pieces from * the name of the file in the queue. Ideally, we should be * able to get the mail alias name too. * * NOTE: This depends intimately on the queue name used in ctm_smail. */ npieces = atoi(&ftsent->fts_name[ftsent->fts_namelen-3]); piece = atoi(&ftsent->fts_name[ftsent->fts_namelen-7]); err("%.*s %d/%d sent", ftsent->fts_namelen-8, ftsent->fts_name, piece, npieces); if (chunk++ == num_to_send) break; } fts_close(fts); return(0); }
#define SHORTNEWOPT(x) SHORTtmp_ ## x = OPT_ ## x, #define SHORTTHISOPT(x) SHORTtmp2_ ## x, SHORTVAL_ ## x = SHORTtmp2_ ## x - 1, #define SHORTOPTVAL(x) SHORTVAL_ ## x, #define SHORTTMP(x) SHORTtmp3_ ## x, #define LONGNEWOPT(x) LONGtmp_ ## x = OPT_ ## x, #define LONGTHISOPT(x) LONGtmp2_ ## x, LONGVAL_ ## x = LONGtmp2_ ## x - 1, #define LONGOPTVAL(x) LONGVAL_ ## x, #define LONGTMP(x) SHORTtmp3_ ## x, #define OPTIONS(NOVAL, VAL, SHORT, LONG) \ OPTHELP(NOVAL, VAL, SHORT, LONG, IGNORE, IGNORE, IGNORE, IGNORE) enum { OPTIONS(DEFENUM,DEFENUM,IGNORE,IGNORE) NOPTIONS }; enum { OPTIONS(IGNORE,IGNORE,SHORTTMP,IGNORE) NSHORTOPTS }; enum { OPTIONS(IGNORE,IGNORE,IGNORE,LONGTMP) NLONGOPTS }; static const int opthasval[NOPTIONS] = {OPTIONS(ZERO,ONE,IGNORE,IGNORE)}; static const char shortopts[] = {OPTIONS(IGNORE,IGNORE,STRINGNOCOMMA,IGNORE)}; static const char *const longopts[] = {OPTIONS(IGNORE,IGNORE,IGNORE,STRING)}; enum { OPTIONS(SHORTNEWOPT,SHORTNEWOPT,SHORTTHISOPT,IGNORE) UNUSEDENUMVAL1 }; enum { OPTIONS(LONGNEWOPT,LONGNEWOPT,IGNORE,LONGTHISOPT) UNUSEDENUMVAL2 }; static const int shortvals[] = {OPTIONS(IGNORE,IGNORE,SHORTOPTVAL,IGNORE)}; static const int longvals[] = {OPTIONS(IGNORE,IGNORE,IGNORE,LONGOPTVAL)}; static void usage(FILE *fp) { char longbuf[80]; const char *prefix, *shortopt, *longopt, *optarg; int i, optex; #define HELPRESET prefix = shortopt = longopt = optarg = NULL, optex = -1 #define HELPNOVAL(s) optex = 0;
IoObject *IoCairoFontOptions_getHintMetrics(IoCairoFontOptions *self, IoObject *locals, IoMessage *m) { return IONUMBER(cairo_font_options_get_hint_metrics(OPTIONS(self))); }
IoObject *IoCairoFontOptions_setHintMetrics(IoCairoFontOptions *self, IoObject *locals, IoMessage *m) { cairo_font_options_set_hint_metrics(OPTIONS(self), IoMessage_locals_intArgAt_(m, locals, 0)); CHECK_STATUS(self); return self; }
IoObject *IoCairoFontOptions_setHintStyle(IoCairoFontOptions *self, IoObject *locals, IoMessage *m) { cairo_font_options_set_subpixel_order(OPTIONS(self), IoMessage_locals_intArgAt_(m, locals, 0)); CHECK_STATUS(self); return self; }
IoObject *IoCairoFontOptions_getSubpixelOrder(IoCairoFontOptions *self, IoObject *locals, IoMessage *m) { return IONUMBER(cairo_font_options_get_subpixel_order(OPTIONS(self))); }
IoObject *IoCairoFontOptions_getAntialias(IoCairoFontOptions *self, IoObject *locals, IoMessage *m) { return IONUMBER(cairo_font_options_get_antialias(OPTIONS(self))); }
cairo_font_options_t *IoCairoFontOptions_rawFontOptions(IoCairoFontOptions *self) { return OPTIONS(self); }
int main (int argc, char **argv) { /* Os sockets. Um que será o socket que vai escutar pelas conexões * e o outro que vai ser o socket específico de cada conexão */ int listenfd, connfd; /* Informações sobre o socket (endereço e porta) ficam nesta struct */ struct sockaddr_in servaddr; /* Retorno da função fork para saber quem é o processo filho e quem * é o processo pai */ pid_t childpid; /* Armazena linhas recebidas do cliente */ char recvline[MAXLINE + 1]; /* Armazena o tamanho da string lida do cliente */ ssize_t n; int method; if (argc != 2) { fprintf(stderr,"Uso: %s <Porta>\n",argv[0]); fprintf(stderr,"Vai rodar um servidor de echo na porta <Porta> TCP\n"); exit(1); } /* Criação de um socket. Eh como se fosse um descritor de arquivo. Eh * possivel fazer operacoes como read, write e close. Neste * caso o socket criado eh um socket IPv4 (por causa do AF_INET), * que vai usar TCP (por causa do SOCK_STREAM), já que o HTTP * funciona sobre TCP, e será usado para uma aplicação convencional sobre * a Internet (por causa do número 0) */ if ((listenfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("socket :(\n"); exit(2); } /* Agora é necessário informar os endereços associados a este * socket. É necessário informar o endereço / interface e a porta, * pois mais adiante o socket ficará esperando conexões nesta porta * e neste(s) endereços. Para isso é necessário preencher a struct * servaddr. É necessário colocar lá o tipo de socket (No nosso * caso AF_INET porque é IPv4), em qual endereço / interface serão * esperadas conexões (Neste caso em qualquer uma -- INADDR_ANY) e * qual a porta. Neste caso será a porta que foi passada como * argumento no shell (atoi(argv[1])) */ bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(atoi(argv[1])); if (bind(listenfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) == -1) { perror("bind :(\n"); exit(3); } /* Como este código é o código de um servidor, o socket será um * socket passivo. Para isto é necessário chamar a função listen * que define que este é um socket de servidor que ficará esperando * por conexões nos endereços definidos na função bind. */ if (listen(listenfd, LISTENQ) == -1) { perror("listen :(\n"); exit(4); } printf("[Servidor no ar. Aguardando conexoes na porta %s]\n",argv[1]); printf("[Para finalizar, pressione CTRL+c ou rode um kill ou killall]\n"); /* O servidor no final das contas é um loop infinito de espera por * conexões e processamento de cada uma individualmente */ for (;;) { /* O socket inicial que foi criado é o socket que vai aguardar * pela conexão na porta especificada. Mas pode ser que existam * diversos clientes conectando no servidor. Por isso deve-se * utilizar a função accept. Esta função vai retirar uma conexão * da fila de conexões que foram aceitas no socket listenfd e * vai criar um socket específico para esta conexão. O descritor * deste novo socket é o retorno da função accept. */ if ((connfd = accept(listenfd, (struct sockaddr *) NULL, NULL)) == -1 ) { perror("accept :(\n"); exit(5); } /* Agora o servidor precisa tratar este cliente de forma * separada. Para isto é criado um processo filho usando a * função fork. O processo vai ser uma cópia deste. Depois da * função fork, os dois processos (pai e filho) estarão no mesmo * ponto do código, mas cada um terá um PID diferente. Assim é * possível diferenciar o que cada processo terá que fazer. O * filho tem que processar a requisição do cliente. O pai tem * que voltar no loop para continuar aceitando novas conexões */ /* Se o retorno da função fork for zero, é porque está no * processo filho. */ if ( (childpid = fork()) == 0) { /**** PROCESSO FILHO ****/ printf("[Uma conexao aberta]\n"); /* Já que está no processo filho, não precisa mais do socket * listenfd. Só o processo pai precisa deste socket. */ close(listenfd); /* Agora pode ler do socket e escrever no socket. Isto tem * que ser feito em sincronia com o cliente. Não faz sentido * ler sem ter o que ler. Ou seja, neste caso está sendo * considerado que o cliente vai enviar algo para o servidor. * O servidor vai processar o que tiver sido enviado e vai * enviar uma resposta para o cliente (Que precisará estar * esperando por esta resposta) */ /* ========================================================= */ /* ========================================================= */ /* EP1 INÍCIO */ /* ========================================================= */ /* ========================================================= */ /* TODO: É esta parte do código que terá que ser modificada * para que este servidor consiga interpretar comandos HTTP */ /* while ((n=read(connfd, recvline, MAXLINE)) > 0) { recvline[n]=0; printf("[Cliente conectado no processo filho %d enviou:] ",getpid()); if ((fputs(recvline,stdout)) == EOF) { perror("fputs :( \n"); exit(6); } write(connfd, recvline, strlen(recvline)); } */ if((n=read(connfd, recvline, MAXLINE)) > 0) { method = DecideMethod(recvline, n); switch (method) { case 1: GET(connfd, recvline, n); break; case 2: POST(connfd, recvline, n); break; case 3: OPTIONS(connfd); break; }; /*1fputs(recvline[0],stdout);*/ } /* ========================================================= */ /* ========================================================= */ /* EP1 FIM */ /* ========================================================= */ /* ========================================================= */ /* Após ter feito toda a troca de informação com o cliente, * pode finalizar o processo filho */ printf("[Uma conexao fechada]\n"); /*exit(0);*/ } /**** PROCESSO PAI ****/ /* Se for o pai, a única coisa a ser feita é fechar o socket * connfd (ele é o socket do cliente específico que será tratado * pelo processo filho) */ close(connfd); } exit(0); }
/* * If given a '-p' flag, read encoded delta pieces from stdin or file * arguments, decode them and assemble any completed deltas. If given * a '-b' flag, pass any completed deltas to 'ctm' for application to * the source tree. The '-d' flag is mandatory, but either of '-p' or * '-b' can be omitted. If given the '-l' flag, notes and errors will * be timestamped and written to the given file. * * Exit status is 0 for success or 1 for indigestible input. That is, * 0 means the encode input pieces were decoded and stored, and 1 means * some input was discarded. If a delta fails to apply, this won't be * reflected in the exit status. In this case, the delta is left in * 'deltadir'. */ int main(int argc, char **argv) { char *log_file = NULL; int status = 0; int fork_ctm = 0; mask = umask(0); umask(mask); err_prog_name(argv[0]); OPTIONS("[-Dfuv] [-p piecedir] [-d deltadir] [-b basedir] [-l log] [file ...]") FLAG('D', delete_after) FLAG('f', fork_ctm) FLAG('u', set_time) FLAG('v', apply_verbose) STRING('p', piece_dir) STRING('d', delta_dir) STRING('b', base_dir) STRING('l', log_file) ENDOPTS if (delta_dir == NULL) usage(); if (piece_dir == NULL && (base_dir == NULL || argc > 1)) usage(); if (log_file != NULL) err_set_log(log_file); /* * Digest each file in turn, or just stdin if no files were given. */ if (argc <= 1) { if (piece_dir != NULL) status = read_piece(NULL); } else { while (*++argv != NULL) status |= read_piece(*argv); } /* * Maybe it's time to look for and apply completed deltas with ctm. * * Shall we report back to sendmail immediately, and let a child do * the work? Sendmail will be waiting for us to complete, delaying * other mail, and possibly some intermediate process (like MH slocal) * will terminate us if we take too long! * * If fork() fails, it's unlikely we'll be able to run ctm, so give up. * Also, the child exit status is unimportant. */ if (base_dir != NULL) if (!fork_ctm || fork() == 0) apply_complete(); return status; }
void IoCairoFontOptions_free(IoCairoFontOptions *self) { if (OPTIONS(self)) cairo_font_options_destroy(OPTIONS(self)); }
int main(int argc, char **argv) { int fd, count; struct ctx actx, *ctx = &actx; struct stat st; off_t totalsize, realsize; void *mappedfile; triewalk *tw; indexbuild *ib; const struct trie_file *tf, *prevtf; char *filename = PNAME ".dat"; int doing_opts = 1; enum { TEXT, HTML, SCAN, DUMP, SCANDUMP, LOAD, HTTPD, REMOVE }; struct action { int mode; char *arg; } *actions = NULL; int nactions = 0, actionsize = 0, action; time_t now = time(NULL); time_t textcutoff = now, htmlnewest = now, htmloldest = now; int htmlautoagerange = 1; const char *httpserveraddr = "localhost"; const char *httpserverport = NULL; const char *httpauthdata = NULL; const char *outfile = NULL; const char *html_title = PNAME; int auth = HTTPD_AUTH_MAGIC | HTTPD_AUTH_BASIC; int progress = 1; struct inclusion_exclusion *inex = NULL; int ninex = 0, inexsize = 0; int crossfs = 0; int depth = -1, gotdepth = 0; int fakediratimes = 1; int mtime = 0; int closeoneof = 1; int showfiles = 0; #ifdef DEBUG_MAD_OPTION_PARSING_MACROS { static const char *const optnames[NOPTIONS] = { OPTIONS(STRING,STRING,IGNORE,IGNORE) }; int i; for (i = 0; i < NSHORTOPTS; i++) printf("-%c == %s [%s]\n", shortopts[i], optnames[shortvals[i]], opthasval[shortvals[i]] ? "value" : "no value"); for (i = 0; i < NLONGOPTS; i++) printf("--%s == %s [%s]\n", longopts[i], optnames[longvals[i]], opthasval[longvals[i]] ? "value" : "no value"); } #endif while (--argc > 0) { char *p = *++argv; if (doing_opts && *p == '-') { int wordstart = 1; if (!strcmp(p, "--")) { doing_opts = 0; continue; } p++; while (*p) { int optid = -1; int i; char *optval; if (wordstart && *p == '-') { /* * GNU-style long option. */ p++; optval = strchr(p, '='); if (optval) *optval++ = '\0'; for (i = 0; i < NLONGOPTS; i++) { const char *opt = longopts[i], *s = p; int match = 1; /* * The underscores in the option names * defined above may be given by the user * as underscores or dashes, or omitted * entirely. */ while (*opt) { if (*opt == '_') { if (*s == '-' || *s == '_') s++; } else { if (*opt != *s) { match = 0; break; } s++; } opt++; } if (match && !*s) { optid = longvals[i]; break; } } if (optid < 0) { fprintf(stderr, "%s: unrecognised option '--%s'\n", PNAME, p); return 1; } if (!opthasval[optid]) { if (optval) { fprintf(stderr, "%s: unexpected argument to option" " '--%s'\n", PNAME, p); return 1; } } else { if (!optval) { if (--argc > 0) { optval = *++argv; } else { fprintf(stderr, "%s: option '--%s' expects" " an argument\n", PNAME, p); return 1; } } } p += strlen(p); /* finished with this argument word */ } else { /* * Short option. */ char c = *p++; for (i = 0; i < NSHORTOPTS; i++) if (c == shortopts[i]) { optid = shortvals[i]; break; } if (optid < 0) { fprintf(stderr, "%s: unrecognised option '-%c'\n", PNAME, c); return 1; } if (opthasval[optid]) { if (*p) { optval = p; p += strlen(p); } else if (--argc > 0) { optval = *++argv; } else { fprintf(stderr, "%s: option '-%c' expects" " an argument\n", PNAME, c); return 1; } } else { optval = NULL; } } wordstart = 0; /* * Now actually process the option. */ switch (optid) { case OPT_HELP: usage(stdout); return 0; case OPT_VERSION: #ifdef PACKAGE_VERSION printf("%s, revision %s\n", PNAME, PACKAGE_VERSION); #else printf("%s: version number not available when not built" " via automake\n", PNAME); #endif return 0; case OPT_LICENCE: { extern const char *const licence[]; int i; for (i = 0; licence[i]; i++) fputs(licence[i], stdout); } return 0; case OPT_SCAN: if (nactions >= actionsize) { actionsize = nactions * 3 / 2 + 16; actions = sresize(actions, actionsize, struct action); } actions[nactions].mode = SCAN; actions[nactions].arg = optval; nactions++; break; case OPT_SCANDUMP: if (nactions >= actionsize) { actionsize = nactions * 3 / 2 + 16; actions = sresize(actions, actionsize, struct action); } actions[nactions].mode = SCANDUMP; actions[nactions].arg = optval; nactions++; break; case OPT_DUMP: if (nactions >= actionsize) { actionsize = nactions * 3 / 2 + 16; actions = sresize(actions, actionsize, struct action); } actions[nactions].mode = DUMP; actions[nactions].arg = NULL; nactions++; break; case OPT_LOAD: if (nactions >= actionsize) { actionsize = nactions * 3 / 2 + 16; actions = sresize(actions, actionsize, struct action); }
int main(int argc, char **argv) { kumy_file_t *kumy; miniseed_file_t *mseed[KUMY_FILE_CHANNELS]; int32_t frame[KUMY_FILE_CHANNELS]; uint64_t frames, l, frames_per_file, frames_total, frame_count = 0; int i; char oname[1024], folder[1024]; uint32_t sample_rate, seconds_per_file; int percent = 0, old_percent = -1; int compression = 1, show_progress = 1; char *infile = 0; struct taia start_time; /* 1871 */ struct taia stop_time; /* 1951 */ struct taia sync_time; /* 2031 */ struct taia skew_time; /* 2111 */ struct caltime ct; struct taia tt, dt; program = argv[0]; parse_options(&argc, &argv, OPTIONS( FLAG('n', "no-compression", compression, 0), FLAG('q', "quiet", show_progress, 0), FLAG_CALLBACK('h', "help", usage) )); if (argc < 2) { usage(0, 0, 0); } infile = argv[1]; if (!(kumy = kumy_file_open(infile))) { fprintf(stderr, "Invalid file: %s.\n", infile); return -1; } parse_text_date(&start_time, kumy->text_header[0].content + 1871); parse_text_date(&stop_time, kumy->text_header[0].content + 1951); parse_text_date(&sync_time, kumy->text_header[0].content + 2031); parse_text_date(&skew_time, kumy->text_header[0].content + 2111); sample_rate = 1000000 / kumy->binary_header[0].sample_interval; if (sample_rate <= 250) { seconds_per_file = 86400; } else if (sample_rate <= 500) { seconds_per_file = 43200; } else if (sample_rate <= 1000) { seconds_per_file = 21600; } else if (sample_rate <= 2000) { seconds_per_file = 10800; } else { seconds_per_file = 5400; } frames_per_file = sample_rate * seconds_per_file; frames_total = kumy->binary_header[0].num_samples; caltime_utc(&ct, &start_time.sec, 0, 0); ct.hour = 0; ct.minute = 0; ct.second = 0; caltime_tai(&ct, &tt.sec); tt.nano = tt.atto = 0; while (!taia_less(&start_time, &tt)) { tt.sec.x += seconds_per_file; } taia_sub(&dt, &tt, &start_time); frames = taia_approx(&dt) / seconds_per_file * frames_per_file; l = last('.', infile); if (l == -1 || l >= sizeof(folder)) return -1; /* Create folder. */ copy(folder, l, infile); folder[l] = 0; mkdir_p(folder); for (i = 0; i < KUMY_FILE_CHANNELS; ++i) { caltime_utc(&ct, &start_time.sec, 0, 0); snprintf(oname, sizeof(oname), "%s/%lld.%02lld.%02lld.%02lld.%02lld.%02lld.%s.seed", folder, (long long)ct.date.year, (long long)ct.date.month, (long long)ct.date.day, (long long)ct.hour, (long long)ct.minute, (long long)ct.second, channel_names[i]); if (!(mseed[i] = miniseed_file_create((char*)oname))) { fprintf(stderr, "Invalid file: %s.\n", oname); return -1; } miniseed_file_set_sample_rate(mseed[i], sample_rate); miniseed_file_set_start_time(mseed[i], &start_time); miniseed_file_set_info(mseed[i], "OBS", "DE", channel_names[i], "K"); miniseed_file_set_compression(mseed[i], compression); } while (kumy_file_read_int_frame(kumy, frame) >= 0) { if (frames == 0) { /* Create new files.*/ for (i = 0; i < KUMY_FILE_CHANNELS; ++i) { miniseed_file_close(mseed[i]); caltime_utc(&ct, &tt.sec, 0, 0); snprintf(oname, sizeof(oname), "%s/%lld.%02lld.%02lld.%02lld.%02lld.%02lld.%s.seed", folder, (long long)ct.date.year, (long long)ct.date.month, (long long)ct.date.day, (long long)ct.hour, (long long)ct.minute, (long long)ct.second, channel_names[i]); if (!(mseed[i] = miniseed_file_create((char*)oname))) { fprintf(stderr, "Invalid file: %s.\n", oname); return -1; } miniseed_file_set_sample_rate(mseed[i], sample_rate); miniseed_file_set_start_time(mseed[i], &tt); miniseed_file_set_info(mseed[i], "OBS", "DE", channel_names[i], "K"); miniseed_file_set_compression(mseed[i], compression); } frames = frames_per_file; tt.sec.x += seconds_per_file; } for (i = 0; i < KUMY_FILE_CHANNELS; ++i) { miniseed_file_write_int_frame(mseed[i], frame + i); } if (show_progress && frame_count % 10000 == 0) { percent = 100 * frame_count / frames_total; if (percent != old_percent) { progress(percent, 0); old_percent = percent; } } --frames; ++frame_count; } if (show_progress) progress(100, 1); kumy_file_close(kumy); for (i = 0; i < KUMY_FILE_CHANNELS; ++i) { miniseed_file_close(mseed[i]); } return 0; }