Added ip checking functions

pull/47/head
parent 2d8aff421c
commit cef0ef0cc4
No known key found for this signature in database
GPG Key ID: FF1D842BF4DDE92B

@ -241,11 +241,11 @@ void yon_gtk_widget_set_sensitive_from_toggle_button_inversed(GtkToggleButton *t
}
void yon_gtk_widget_set_sensitive_from_switch(GtkSwitch *toggle, GtkWidget *target){
void yon_gtk_widget_set_sensitive_from_switch(GtkSwitch *toggle, int status, GtkWidget *target){
gtk_widget_set_sensitive(target,gtk_switch_get_active(toggle));
}
void yon_gtk_widget_set_sensitive_from_switch_inversed(GtkSwitch *toggle, GtkWidget *target){
void yon_gtk_widget_set_sensitive_from_switch_inversed(GtkSwitch *toggle, int status, GtkWidget *target){
gtk_widget_set_sensitive(target,!gtk_switch_get_active(toggle));
}
@ -447,38 +447,19 @@ void yon_gtk_window_set_shrinking_from_revealer_resizing(GtkWindow *window, GtkR
g_signal_connect(G_OBJECT(wrapped->revealer),"notify::reveal-child",G_CALLBACK(_yon_on_revealer_switched),wrapped);
}
// void on_entry_pattern_inserted(GtkEditable *self, const gchar *text, gint length, gint *position, char *pattern){
// if (length!=1) {
// return;
// }
// const char *old = gtk_entry_get_text(GTK_ENTRY(self));
// int old_size = strlen(old);
// char *final = yon_char_append((char*)old,text);
// switch(pattern[old_size]){
// case '\1':{
// if (text[0]>='0'&&text[0]<='9')
// }
// break;
// case '\2':
// break;
// default:
// break;
// }
// if (strlen(new_text) < strlen(text)) {
// g_signal_handlers_block_by_func(editable, G_CALLBACK(yon_on_space_first_changed), NULL);
// gtk_entry_set_text(editable, new_text);
// g_signal_handlers_unblock_by_func(editable, G_CALLBACK(yon_on_space_first_changed), NULL);
// g_signal_stop_emission_by_name(editable, "changed");
// }
// }
// void yon_entry_set_pattern(GtkEntry *target, char *pattern){
// char *pattern_copy = yon_char_new(pattern);
// g_signal_connect(G_OBJECT(target),"insert-text",G_CALLBACK(on_entry_pattern_inserted),pattern_copy)
// }
void on_entry_pattern_inserted(GtkEditable *self, const gchar *text, gint length, gint *position, char *pattern){
const char *old_text = gtk_entry_get_text(GTK_ENTRY(self));
char *test_text = yon_char_append(old_text,text);
if (!g_regex_match_simple(pattern,test_text,0,0)){
g_signal_stop_emission_by_name(G_OBJECT(self),"insert-text");
}
}
void yon_entry_set_pattern(GtkEntry *target, char *pattern){
char *pattern_copy = yon_char_new(pattern);
g_signal_connect(G_OBJECT(target),"insert-text",G_CALLBACK(on_entry_pattern_inserted),pattern_copy);
}
void yon_on_insert_allowed_check(GtkEditable *editable, char *text, int length, int *position,char *symbols){
@ -507,3 +488,44 @@ void yon_on_entry_set_allowed_symbols(GtkEntry *target, char *symbols){
g_return_if_fail(GTK_IS_ENTRY(target));
g_signal_connect(G_OBJECT(target),"insert-text",G_CALLBACK(yon_on_insert_allowed_check),symbols);
}
int yon_ip_check(char *ip){
if (!strstr(ip,".")){
int pixmask = atoi(ip);
if (pixmask > 32) return 0;
} else {
if (!g_regex_match_simple("^(\\d){0,3}\\.(\\d){0,3}\\.(\\d){0,3}\\.(\\d){0,3}$",ip,0,0)) return 0;
int size;
config_str parsed = yon_char_parse(ip,&size,".");
for (int i=0;i<size;i++){
int bits = atoi(parsed[i]);
if (bits>255){
yon_char_parsed_free(parsed,size);
return 0;
}
}
yon_char_parsed_free(parsed,size);
}
return 1;
}
int yon_ip_mask_get_bits(char *mask){
if (!strstr(mask,".")){
int bits = atoi(mask);
return bits;
}
int size;
config_str parsed = yon_char_parse(mask,&size,".");
int bits = 32;
for (int i=0;i<size;i++){
int pixmask = atoi(parsed[i]);
int k;
for (k=0;k<8;k++){
if (!(pixmask & (1<<k))){
bits--;
}
}
}
yon_char_parsed_free(parsed,size);
return bits;
}

@ -283,8 +283,8 @@ void yon_gtk_widget_set_sensitive_from_toggle_button(GtkToggleButton *toggle, Gt
*/
void yon_gtk_widget_set_sensitive_from_toggle_button_inversed(GtkToggleButton *toggle, GtkWidget *target);
void yon_gtk_widget_set_sensitive_from_switch(GtkSwitch *toggle, GtkWidget *target);
void yon_gtk_widget_set_sensitive_from_switch_inversed(GtkSwitch *toggle, GtkWidget *target);
void yon_gtk_widget_set_sensitive_from_switch(GtkSwitch *toggle, int status, GtkWidget *target);
void yon_gtk_widget_set_sensitive_from_switch_inversed(GtkSwitch *toggle, int status, GtkWidget *target);
/**yon_gtk_widget_set_sensitive_from_combo_box(GtkComboBox *toggle, GtkWidget *target);
* [EN]
@ -533,6 +533,8 @@ void yon_gtk_entry_block_symbols(GtkEntry *target, char *symbols);
void yon_gtk_entry_block_lowercase(GtkEntry *target);
void yon_entry_set_pattern(GtkEntry *target, char *pattern);
void yon_on_entry_set_allowed_symbols(GtkEntry *target, char *symbols);
// GtkTreeStore section
@ -595,4 +597,8 @@ char *yon_packages_get_version(enum YON_PACKAGES_DB_TYPE type, const char *packa
char *yon_packages_get_description(enum YON_PACKAGES_DB_TYPE type, const char *package);
void yon_combo_box_set_default(GtkComboBoxText *target, char *command, char*(result_callback)(char*));
int yon_ip_mask_get_bits(char *mask);
int yon_ip_check(char *ip);
#endif
Loading…
Cancel
Save