1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
5 * Copyright (C) 2012 Igalia S.L.
12 #include <glib/gprintf.h>
14 #include "soup-tld-private.h"
16 #define MAX_LINE_LENGTH 256
19 main(int argc, char **argv)
21 GFile *tlds_file, *inc_file;
22 GFileInputStream *file_reader;
23 GFileOutputStream *file_writer;
24 GDataInputStream *data_reader;
29 tlds_file = g_file_new_for_path (argv[1]);
30 file_reader = g_file_read (tlds_file, NULL, NULL);
31 g_object_unref (tlds_file);
36 data_reader = g_data_input_stream_new (G_INPUT_STREAM (file_reader));
37 g_object_unref (file_reader);
41 inc_file = g_file_new_for_path (argv[2]);
42 file_writer = g_file_replace (inc_file, NULL, FALSE, G_FILE_CREATE_NONE, NULL, NULL);
43 g_object_unref (inc_file);
46 g_object_unref (data_reader);
53 char output_line[MAX_LINE_LENGTH];
56 rule = g_data_input_stream_read_line (data_reader, &size, NULL, NULL);
61 /* If the line is empty or is a comment then ignore. */
62 if (!size || g_str_has_prefix (rule, "//")) {
69 /* Lines starting with '!' are exceptions to the rules */
72 flags |= SOUP_TLD_RULE_EXCEPTION;
75 if (g_str_has_prefix (domain, "*.")) {
77 flags |= SOUP_TLD_RULE_MATCH_ALL;
80 /* Skip the leading dot (is optional) */
84 size = g_snprintf (output_line, MAX_LINE_LENGTH, "{ \"%s\", %d },\n", g_strstrip(domain), flags);
85 g_output_stream_write (G_OUTPUT_STREAM (file_writer), output_line, size, NULL, NULL);
91 g_object_unref (data_reader);
92 g_object_unref (file_writer);