예제 #1
0
JS_EXPORT_API 
JSObjectRef installer_get_system_users()
{
    GRAB_CTX ();
    JSObjectRef array = json_array_create ();

    struct passwd *user;
    gchar *username = NULL;
    int i = 0;

    while ((user = getpwent ()) != NULL){
        if (user->pw_uid >= 1000 || g_strcmp0 ("deepin", user->pw_name) == 0) {
            continue;
        }
        username = g_strdup (user->pw_name);
        json_array_insert(array, i, jsvalue_from_cstr (get_global_context(),
                          username));
        i++;
        g_free (username);
    }
    endpwent ();
    UNGRAB_CTX ();

    return array;
}
예제 #2
0
JS_EXPORT_API
JSObjectRef installer_get_installation_info ()
{
    GRAB_CTX ();
    JSObjectRef json = json_create ();
    json_append_string (json, "target", opt_target);
    json_append_string (json, "home", opt_home);
    json_append_string (json, "username", opt_username);
    json_append_string (json, "hostname", opt_hostname);
    json_append_string (json, "password", opt_password);
    json_append_string (json, "layout", opt_layout);
    json_append_string (json, "variant", opt_variant);
    json_append_string (json, "timezone", opt_timezone);
    json_append_string (json, "locale", opt_locale);
    json_append_string (json, "grub", opt_grub);
    UNGRAB_CTX ();
    return json;
}
예제 #3
0
JS_EXPORT_API
JSObjectRef installer_get_timezone_list ()
{
    GRAB_CTX ();
    gsize index = 0;
    GError *error = NULL;
    GFile *file = NULL;
    GFileInputStream *input = NULL;
    GDataInputStream *data_input = NULL;

    JSObjectRef timezones = json_array_create ();

    file = g_file_new_for_path ("/usr/share/zoneinfo/zone.tab");
    if (!g_file_query_exists (file, NULL)) {
        g_warning ("get timezone list:zone.tab not exists\n");
        goto out;
    }

    input = g_file_read (file, NULL, &error);
    if (error != NULL){
        g_warning ("get timezone list:read zone.tab error->%s", error->message);
        goto out;
    }

    data_input = g_data_input_stream_new ((GInputStream *) input);
    if (data_input == NULL) {
        g_warning ("get timezone list:get data input stream failed\n");
        goto out;
    }
    
    char *data = (char *) 1;
    while (data) {
        data = g_data_input_stream_read_line (data_input, NULL, NULL, NULL);
        if (data == NULL) {
            break;
        }
        if (g_str_has_prefix (data, "#")){
            g_debug ("get timezone list:comment line, just pass");
            continue;
        } else {
            gchar **line = g_strsplit (data, "\t", -1);
            if (line == NULL) {
                g_warning ("get timezone list:split %s failed\n", data);
            } else {
                json_array_insert (timezones, index, jsvalue_from_cstr (get_global_context (), line[2]));
                index++;
                g_strfreev (line);
            }
        }
    }
    goto out;
out:
    if (file != NULL) {
        g_object_unref (file);
    }
    if (data_input != NULL) {
        g_object_unref (data_input);
    }
    if (input != NULL) {
        g_object_unref (input);
    }
    if (error != NULL) {
        g_error_free (error);
        error = NULL;
    }
    UNGRAB_CTX ();

    return timezones;
}