void op_edit (GList *filelist, char *path) { char *fullpath; char *editor; char *command; fullpath = file_fullpath(path, filelist->data); /* Check if editor defined */ if ((editor = config_find_value(config_nimf, "editor", NULL)) == NULL) { dialog_error ("No editor is assigned."); return; } command = malloc (sizeof(char) * (strlen(editor) + strlen(fullpath) + 2)); sprintf (command, editor, fullpath); system (command); /* Yikes! */ free (command); free (fullpath); }
gchar * pkey_manage_ask_password () { gchar *password = NULL; gchar *pass; gboolean is_key_ok; if (! ca_file_is_password_protected()) return NULL; is_key_ok = FALSE; while (! is_key_ok) { if (password) { g_free (password); password = NULL; } printf (_("This action requires using one or more private keys saved in the database.\n")); pass = getpass (_("Please insert the database password:"******"The given password doesn't match the one used in the database")); } } return password; }
gchar * pkey_manage_ask_password () { gchar *password = NULL; gboolean is_key_ok; gboolean remember = 0; GObject * widget = NULL, * password_widget = NULL, *remember_password_widget = NULL; GtkBuilder * dialog_gtkb = NULL; gint response = 0; if (! ca_file_is_password_protected()) return NULL; dialog_gtkb = gtk_builder_new(); gtk_builder_add_from_file (dialog_gtkb, g_build_filename (PACKAGE_DATA_DIR, "gnomint", "get_db_password_dialog.ui", NULL), NULL); gtk_builder_connect_signals (dialog_gtkb, NULL); password_widget = gtk_builder_get_object (dialog_gtkb, "cadb_password_entry"); remember_password_widget = gtk_builder_get_object (dialog_gtkb, "remember_password_checkbutton"); widget = gtk_builder_get_object (dialog_gtkb, "cadb_password_dialog_ok_button"); is_key_ok = FALSE; if (saved_password && ca_file_check_password (saved_password)) { is_key_ok = TRUE; password = g_strdup (saved_password); } while (! is_key_ok) { gtk_widget_grab_focus (GTK_WIDGET(password_widget)); if (password) { g_free (password); password = NULL; } widget = gtk_builder_get_object (dialog_gtkb, "get_db_password_dialog"); response = gtk_dialog_run(GTK_DIALOG(widget)); if (!response) { gtk_widget_destroy (GTK_WIDGET(widget)); g_object_unref (G_OBJECT(dialog_gtkb)); return NULL; } else { password = g_strdup ((gchar *) gtk_entry_get_text (GTK_ENTRY(password_widget))); remember = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(remember_password_widget)); } is_key_ok = ca_file_check_password (password); if (! is_key_ok) { dialog_error (_("The given password doesn't match the one used in the database")); } } if (remember) { if (saved_password) g_free (saved_password); saved_password = g_strdup(password); } widget = gtk_builder_get_object (dialog_gtkb, "get_db_password_dialog"); gtk_widget_destroy (GTK_WIDGET(widget)); g_object_unref (G_OBJECT(dialog_gtkb)); return password; }
gchar * __pkey_retrieve_from_file (gchar **fn, gchar *cert_pem) { gsize file_length = 0; GError *error = NULL; gboolean cancel = FALSE; gboolean save_new_filename = FALSE; gchar *file_name = g_strdup(* fn); gchar *file_contents = NULL; gchar *pem_pkey = NULL; gint tls_error = 0; gchar *password = NULL; TlsCert *cert = tls_parse_cert_pem (cert_pem); do { if (g_file_test(file_name, G_FILE_TEST_EXISTS)) { GIOChannel *gc = g_io_channel_new_file (file_name, "r", &error); if (gc) { g_io_channel_read_to_end (gc, &file_contents, &file_length, &error); g_io_channel_shutdown (gc, TRUE, NULL); do { pem_pkey = tls_load_pkcs8_private_key (file_contents, password, cert->key_id, &tls_error); if (tls_error == TLS_INVALID_PASSWORD) { if (password) dialog_error (_("The given password doesn't match with the one used while crypting the file.")); // We ask for a password password = __pkey_manage_ask_external_file_password (cert->dn); if (! password) cancel = TRUE; } } while (tls_error == TLS_INVALID_PASSWORD && ! cancel); g_free (password); if (! pem_pkey) { if (tls_error == TLS_NON_MATCHING_PRIVATE_KEY) { // The file could be opened, but it didn't contain any recognized private key dialog_error (_("The file designated in database contains a private key, but it " "is not the private key corresponding to the certificate.")); } else { // The file could be opened, but it didn't contain any recognized private key dialog_error (_("The file designated in database doesn't contain any recognized private key.")); } } } else { // The file cannot be opened dialog_error (_("The file designated in database couldn't be opened.")); } } else { // The file doesn't exist dialog_error (_("The file designated in database doesn't exist.")); } if (! pem_pkey && ! cancel) { #ifndef GNOMINTCLI // Show file open dialog GObject * widget = NULL, * filepath_widget = NULL, *remember_filepath_widget = NULL; GtkBuilder * dialog_gtkb = NULL; gint response = 0; dialog_gtkb = gtk_builder_new(); gtk_builder_add_from_file (dialog_gtkb, g_build_filename (PACKAGE_DATA_DIR, "gnomint", "get_pkey_dialog.ui", NULL), NULL); gtk_builder_connect_signals (dialog_gtkb, NULL); filepath_widget = gtk_builder_get_object (dialog_gtkb, "pkey_filechooser"); remember_filepath_widget = gtk_builder_get_object (dialog_gtkb, "save_filename_checkbutton"); g_object_set (G_OBJECT(remember_filepath_widget), "visible", FALSE, NULL); gtk_widget_grab_focus (GTK_WIDGET(filepath_widget)); gtk_file_chooser_set_filename (GTK_FILE_CHOOSER(filepath_widget), file_name); g_object_set_data (G_OBJECT(filepath_widget), "save_filename_checkbutton", remember_filepath_widget); widget = gtk_builder_get_object (dialog_gtkb, "cert_dn_label"); gtk_label_set_text (GTK_LABEL(widget), cert->dn); widget = gtk_builder_get_object (dialog_gtkb, "get_pkey_dialog"); response = gtk_dialog_run(GTK_DIALOG(widget)); if (! response) { cancel = TRUE; } else { g_free (file_name); file_name = g_strdup ((gchar *) gtk_file_chooser_get_filename (GTK_FILE_CHOOSER(filepath_widget))); save_new_filename = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(remember_filepath_widget)); } widget = gtk_builder_get_object (dialog_gtkb, "get_pkey_dialog"); gtk_widget_destroy (GTK_WIDGET(widget)); g_object_unref (G_OBJECT(dialog_gtkb)); #else cancel = TRUE; #endif } } while (! pem_pkey && ! cancel); tls_cert_free (cert); g_free (file_contents); if (error) g_error_free (error); if (cancel) { g_free (file_name); return NULL; } if (save_new_filename) { g_free (*fn); (* fn) = file_name; } return pem_pkey; }
void lecturePPM(char *path){ PPM *pointeurSurImage=NULL; PPM image; pointeurSurImage=ℑ int caractere=0; FILE *f=NULL; RGB **matrice=NULL; int ligne =0,collonne=0; int *lig=&ligne,*col=&collonne; f=fopen(path,"r+"); if (f !=NULL) { caractere=fgetc(f); if (!caractere=='P') { dialog_error(NULL, "Le fichier n'est pas valide"); return ; } caractere=fgetc(f); image.nbMagique=caractere-48;//-48 car le code ascii de 0 est 48 //avant pour sortir du 2 caractere=fgetc(f); //tant que ce n'est pas un chiffre avance while (!(caractere>47 && caractere<58)) { caractere=fgetc(f); } int longeur=0; while (caractere>47 && caractere<58) { longeur=longeur*10+caractere-48; caractere=fgetc(f); } image.largeur=longeur; int largeur=0; caractere=fgetc(f); while (!(caractere>47 && caractere<58)) { caractere=fgetc(f); } while (caractere>47 && caractere<58) { largeur=largeur*10+caractere-48; caractere=fgetc(f); } image.hauteur=largeur; int niveau_max=0; caractere=fgetc(f); while (!(caractere>47 && caractere<58)) { caractere=fgetc(f); } //matrice de 0 à la bonne taille matrice=matriceZERO(image.hauteur, image.largeur); int nombre=0; //tabrgb contientra les 3 valeurs RGB à mettre dans la matrice int tabrgb[3]; if (image.nbMagique==1) { while (!feof(f)) { nombre=0; while (caractere>47 && caractere<58) {//tant que c'est un chiffre nombre=nombre*10+caractere-48; caractere=fgetc(f); } while ((caractere<=47 || caractere>=58) && !feof(f)) {//tant que ce n'est pas un chiffre caractere=fgetc(f); } if(nombre==0){ nombre=255; } else{ nombre=0; } addMATRICE(matrice, nombre, lig, col, image.hauteur, image.largeur); image.niveau_max=255; } } else{ while (caractere>47 && caractere<58) { niveau_max=niveau_max*10+caractere-48; caractere=fgetc(f); } image.niveau_max=niveau_max; while (!(caractere>47 && caractere<58)) { caractere=fgetc(f); } } if (image.nbMagique==2) { while (!feof(f)) { nombre=0; while (caractere>47 && caractere<58) {//tant que c'est un chiffre nombre=nombre*10+caractere-48; caractere=fgetc(f); } while ((caractere<=47 || caractere>=58) && !feof(f)) {//tant que ce n'est pas un chiffre caractere=fgetc(f); } addMATRICE(matrice, (nombre*255)/image.niveau_max, lig, col, image.hauteur, image.largeur); } } else if (image.nbMagique==3) { tabrgb[0]=-1; tabrgb[1]=-1; tabrgb[2]=-1; int ajoute=0; while (!feof(f)) { while (caractere>47 && caractere<58 && ajoute==0) {//tant que c'est un chiffre nombre=nombre*10+caractere-48; caractere=fgetc(f); ajoute=0; } if(ajoute==0) { if(tabrgb[0]==-1) { tabrgb[0]=(int)(nombre*255/image.niveau_max); } else if(tabrgb[1]==-1) { tabrgb[1]=(int)(nombre*255/image.niveau_max); } else if(tabrgb[2]==-1) { tabrgb[2]=(int)(nombre*255/image.niveau_max); ajoute=2; } } nombre=0; while ((caractere<=47 || caractere>=58) && !feof(f)) {//tant que ce n'est pas un chiffre caractere=fgetc(f); } if(tabrgb[0]!=-1&&tabrgb[1]!=-1&&tabrgb[2]!=-1&&ajoute==2){ add3Matrice(matrice, tabrgb, lig, col, image.hauteur, image.largeur); tabrgb[0]=-1; tabrgb[1]=-1; tabrgb[2]=-1; ajoute=0; } } } else if (image.nbMagique==6) { tabrgb[0]=-1; tabrgb[1]=-1; tabrgb[2]=-1; nombre=0; while (!feof(f)) { caractere=fgetc(f); tabrgb[nombre%3]=(int)(caractere*255/image.niveau_max); nombre++; if(nombre%3==0){ add3Matrice(matrice, tabrgb, lig, col, image.hauteur, image.largeur); } } } else { dialog_error(NULL, "Format ppm non reconnu"); } } image.pixels=matrice; int i,j; image_init.nbMagique=3; image_init.largeur=pointeurSurImage->largeur; image_init.hauteur=pointeurSurImage->hauteur; image_init.niveau_max=255; image_init.pixels=(RGB**) malloc(image_init.hauteur*sizeof(RGB*)); for(i=0;i<image_init.hauteur;i++){ image_init.pixels[i]=(RGB *) malloc(image_init.largeur*sizeof(RGB)); } for(i=0;i<image_init.hauteur;i++){ for(j=0;j<image_init.largeur;j++){ image_init.pixels[i][j].r=image.pixels[i][j].r; image_init.pixels[i][j].g=image.pixels[i][j].g; image_init.pixels[i][j].b=image.pixels[i][j].b; } } }