Exemple #1
0
int
_gss_ntlm_get_user_cred(const ntlm_name target_name,
			ntlm_cred *rcred)
{
    ntlm_cred cred;
    int ret;

    cred = calloc(1, sizeof(*cred));
    if (cred == NULL)
	return ENOMEM;

    ret = get_user_file(target_name,
                        &cred->domain, &cred->username, &cred->key);
    if (ret)
	ret = get_user_ccache(target_name,
                              &cred->domain, &cred->username, &cred->key);
    if (ret) {
	free(cred);
	return ret;
    }

    *rcred = cred;

    return ret;
}
gboolean save_selected_color ()
{
	GtkEntry *entry;
	FILE     *fp;
	gchar     old[512] = "";
	
	/* get entry text */
	entry = GTK_ENTRY (lookup_widget (savedialog, "save_entry"));
	colorname = g_strdup (gtk_entry_get_text (entry));
	
	if (!strcmp (colorname, ""))
		return FALSE;

	/* save color in user file - write at top of the file */
	
	/* if file exists already, get its contents, otherwise just write to it */
	if (g_file_test (get_user_file (), G_FILE_TEST_EXISTS))
	{
		fp = fopen (get_user_file (), "r");
		if (fp)
		{
			fread (old, sizeof (old), 1, fp);
			fclose (fp);
		}
		else
		{
			show_file_error (FILE_READ);
			return FALSE;
		}
	}
	
	fp = fopen (get_user_file (), "w");
	if (!fp)
	{
		show_file_error (FILE_WRITE);
		return FALSE;
	}
	
	fprintf (fp, "%3d %3d %3d\t\t%s\n%s", colorvalue.red/256, colorvalue.green/256,
	         colorvalue.blue/256, colorname, old);
	fclose (fp);
	return TRUE;
}
/**
 * displays a simple file error dialog, where type specifies the
 * access that failed (read, write).
 */
void show_file_error (gchar* type)
{
	GtkDialog *d;

	d = GTK_DIALOG (
		gtk_message_dialog_new (GTK_WINDOW (gcolor2), GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR,
			GTK_BUTTONS_OK, _(FILE_ERROR), get_user_file (), type)
	);

	gtk_dialog_run (d);
	gtk_widget_destroy (GTK_WIDGET (d));
}
/**
 * Deletes the first matching line from the rgb user file
 * that matches the color name and color value specified.
 *
 * color_value is given in hex format
 */
gboolean delete_color (gchar* color_name, gchar* color_value)
{
	FILE     *fp;
	gchar    *p;
	gchar    *file_color_name;
	gchar     file_color_value[8];
	gint      r, g, b;
	gchar     buffer[512] = "";
	gchar     newstuff[512] = "";
	gboolean  found = FALSE;

	
	/* remove from file */
	fp = fopen (get_user_file (), "r");
	if (!fp)
	{
		show_file_error (FILE_READ);
		return FALSE;
	}

	while ((p = fgets (buffer, sizeof buffer, fp)) != NULL)
	{
		if (buffer[0] == '!')
			continue;
		r = g_ascii_strtoull (p, &p, 10);
		g = g_ascii_strtoull (p, &p, 10);
		b = g_ascii_strtoull (p, &p, 10);
		p += strspn (p, " \t");
		g_sprintf (file_color_value, "#%2X%2X%2X", r, g, b);
		file_color_name = g_strchomp (g_strdup (p));
		
		/* make sure to only remove the first matching color. both value and
		   name must match */
		if (found || strcmp (file_color_name, color_name) != 0 ||
		    strcmp (g_ascii_strup (file_color_value, -1), color_value) != 0)
		{
			g_sprintf (newstuff, "%s%3d %3d %3d\t\t%s\n", newstuff, r, g, b, file_color_name);
		}
		else
		{
			found = TRUE;
		}
	}
	fclose (fp);
	
	/* only rewrite the file if we found a match */
	if (found)
	{
		fp = fopen (get_user_file (), "w");
		if (!fp)
		{
			show_file_error (FILE_WRITE);
			return FALSE;
		}
		
		fprintf (fp, "%s", newstuff);
		fclose (fp);
		return TRUE;
	}
	return FALSE;
}