Beispiel #1
0
IoCairoFontOptions *IoCairoFontOptions_rawClone(IoCairoFontOptions *proto)
{
	IoCairoFontOptions *self = IoObject_rawClonePrimitive(proto);
	if (OPTIONS(proto))
		IoObject_setDataPointer_(self, cairo_font_options_copy(OPTIONS(proto)));
	return self;
}
Beispiel #2
0
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);
}
Beispiel #3
0
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;
}
Beispiel #4
0
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;
}
Beispiel #5
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;
}
Beispiel #6
0
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;
}
Beispiel #7
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() ? "&#x2935" : "&#x2934");
	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() ? "&#x2935" : "&#x2934");
	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 << "";
}
Beispiel #8
0
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);
}
Beispiel #9
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;
Beispiel #10
0
IoObject *IoCairoFontOptions_getHintMetrics(IoCairoFontOptions *self, IoObject *locals, IoMessage *m)
{
	return IONUMBER(cairo_font_options_get_hint_metrics(OPTIONS(self)));
}
Beispiel #11
0
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;
}
Beispiel #12
0
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;
}
Beispiel #13
0
IoObject *IoCairoFontOptions_getSubpixelOrder(IoCairoFontOptions *self, IoObject *locals, IoMessage *m)
{
	return IONUMBER(cairo_font_options_get_subpixel_order(OPTIONS(self)));
}
Beispiel #14
0
IoObject *IoCairoFontOptions_getAntialias(IoCairoFontOptions *self, IoObject *locals, IoMessage *m)
{
	return IONUMBER(cairo_font_options_get_antialias(OPTIONS(self)));
}
Beispiel #15
0
cairo_font_options_t *IoCairoFontOptions_rawFontOptions(IoCairoFontOptions *self)
{
	return OPTIONS(self);
}
Beispiel #16
0
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);
}
Beispiel #17
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;
    }
Beispiel #18
0
void IoCairoFontOptions_free(IoCairoFontOptions *self)
{
	if (OPTIONS(self))
		cairo_font_options_destroy(OPTIONS(self));
}
Beispiel #19
0
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);
		    }
Beispiel #20
0
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;
}