int nmatch(char *s1, char *s2) { if (*s1 != '\0' && *s2 == '*') return (nmatch(s1 + 1, s2) + nmatch(s1, s2 + 1)); else if (*s1 == '\0' && *s2 == '*') return (nmatch(s1, s2 + 1)); else if (*s1 == *s2 && *s1 != '\0' && *s2 != '\0') return (nmatch(s1 + 1, s2 + 1)); else if (*s1 == '\0' && *s2 == '\0') return (1); return (0); }
int nmatch(char *s1, char *s2) { if (!*s1 && !*s2) return (1); else if (*s1 == *s2) return (nmatch(s1 + 1, s2 + 1)); else if (*s2 == '*' && !*s1) return (nmatch(s1, s2 + 1)); else if (*s2 == '*' && *s1) return (nmatch(s1 + 1, s2) + nmatch(s1, s2 + 1)); return (0); }
int main (int ac, char **av) { if (ac > 1) { printf("%d", nmatch(av[1], av[2])); } }
int nmatch(char *s1, char *s2) { static int i = 0; if (*s2) if (*s2 == '*' && *(s2 + 1) == '\0') return (i+1); if (*s2 == '*' && *s1) { if (nmatch(s1, s2 + 1)) return (i+1); else return (nmatch(s1 + 1, s2)); } if (*s2 == '\0' && *s1 == '\0') return (i+1); if (*s1 == *s2) return(nmatch(s1 + 1, s2 + 1)); else return (i); }
unsigned rtps_def_trace (unsigned handle, const char *name) { unsigned i; for (i = 0; i < MAX_HANDLE_TRACES && rtps_handle_traces [i].handle; i++) if (rtps_handle_traces [i].handle == handle) return (rtps_handle_traces [i].mode); for (i = 0; i < MAX_NAME_TRACES && rtps_name_traces [i].name [0]; i++) if (!nmatch (rtps_name_traces [i].name, name, NM_NOESCAPE)) return (rtps_name_traces [i].mode); return (dds_dtrace); }
void t_ignore (const char *cmd, DDS_DomainParticipant part) { Topic *tp; char spec [192]; skip_blanks (&cmd); skip_string (&cmd, spec); if (spec [0]) { lock_take (topic_lock); LIST_FOREACH (topics, tp) if (tp->active && !nmatch (spec, tp->topic_name, NM_CASEFOLD)) stop_reader (part, tp); lock_release (topic_lock); } }
int main (int argc, const char *argv[]) { const char *name, *pattern, *s; unsigned i; int flags = 0, r; if (argc == 4) if (argv [1][0] == '-') { pattern = argv [2]; name = argv [3]; s = argv [1]; while (*++s != '\0') if (*s == 'e') flags |= NM_NOESCAPE; else if (*s == 'c') flags |= NM_CASEFOLD; else if (*s == 's') flags |= NM_SQL; else usage (); } else usage (); else if (argc == 3) { pattern = argv [1]; name = argv [2]; } else usage (); printf ("NoEscape:%u, CaseFold:%u, SQL:%u, Pattern:'%s', Name:'%s' -> ", (flags & NM_NOESCAPE) != 0, (flags & NM_CASEFOLD) != 0, (flags & NM_SQL) != 0, pattern, name); r = nmatch (pattern, name, flags); if (r == NM_MATCH) printf ("Match!\r\n"); else printf ("No match\n"); }
void train_once_KernelPerceptronModel(KernelPerceptron mdl, const CoNLLCorpus corpus, int max_rec) { long match = 0, total = 0; //size_t slen=0; double s_initial = dsecnd(); int max_sv = 0; log_info("Total number of training instances %d", (max_rec == -1) ? DArray_count(corpus->sentences) : max_rec); for (int si = 0; si < ((max_rec == -1) ? DArray_count(corpus->sentences) : max_rec); si++) { FeaturedSentence sent = (FeaturedSentence) DArray_get(corpus->sentences, si); debug("Building feature matrix for sentence %d", si); set_FeatureMatrix(NULL, corpus, si); set_adjacency_matrix_fast(corpus, si, mdl, false); max_sv += (sent->length + 1) * sent->length - sent->length; int *model = parse(sent); //printfarch(model, sent->length); debug("Parsing sentence %d of length %d is done", si, sent->length); int *empirical = get_parents(sent); //printfarch(empirical, sent->length); int nm = nmatch(model, empirical, sent->length); debug("Model matches %d arcs out of %d arcs", nm, sent->length); if (nm != sent->length) { // root has no valid parent. log_info("Sentence %d (section %d) of length %d (%d arcs out of %d arcs are correct)", si, sent->section, sent->length, nm, sent->length); int sentence_length = sent->length; for (int to = 1; to <= sentence_length; to++) { if (model[to] != empirical[to]) { update_alpha(mdl, si, model[to], to, sent, -1); update_alpha(mdl, si, empirical[to], to, sent, +1); } } } else { log_info("Sentence %d (section %d) of length %d (Perfect parse)", si, sent->section, sent->length); } size_t nsuccess; if (budget_method == RANDOMIZED) { if (mdl->M > budget_target) { size_t nbefore = mdl->M; size_t nasked = nbefore - budget_target; nsuccess = delete_n_random_hypothesis(mdl, nasked); log_info("%lu vectors deleted (%lu asked). Current hypothesis set size reduced from %lu to %lu", nsuccess, nasked, nbefore, mdl->M); } } mdl->c++; free_feature_matrix(corpus, si); match += nm; total += (sent->length); if ((si + 1) % 1000 == 0 && si != 0) { log_info("Running training accuracy %lf after %d sentence.", (match * 1.) / total, si + 1); unsigned nsv = mdl->M; log_info("%u (%f of total %d) support vectors", nsv, (nsv * 1.) / max_sv, max_sv); } free(model); free(empirical); } unsigned nsv = mdl->M; log_info("Running training accuracy %lf", (match * 1.) / total); log_info("%u (%f of total %d) support vectors", nsv, (nsv * 1.) / max_sv, max_sv); if (verbosity > 0) { dump_support_vectors(mdl); } update_average_alpha(mdl); return; }
Endpoint *ep_create (DDS_DomainParticipant part, DDS_BuiltinTopicKey_t *key, const char *topic_name, const char *type_name, DDS_PublicationBuiltinTopicData *data, int writer) { Topic *tp; Endpoint *ep; printf ("* New %s (%s/%s)\r\n", (writer) ? "writer" : "reader", topic_name, type_name); ep = ep_lookup (key); if (ep) { if (writer) { ep->data = *data; tp = ep->topic; ep->data.topic_name = tp->topic_name; ep->data.type_name = tp->type_name; } return (ep); } ep = malloc (sizeof (Endpoint)); if (!ep) { fprintf (stderr, "Not enough memory to create endpoint!\r\n"); return (NULL); } ep->topic = tp = t_lookup (topic_name); if (!tp) { ep->link = NULL; tp = malloc (sizeof (Topic)); if (!tp) { fprintf (stderr, "Not enough memory to create topic!\r\n"); free (ep); return (NULL); } if (writer) { tp->writers = ep; tp->readers = NULL; } else { tp->readers = ep; tp->writers = NULL; } tp->topic_name = strdup (topic_name); tp->type_name = strdup (type_name); tp->active = 0; tp->topic = NULL; tp->dtype = NULL; tp->sub = NULL; tp->ts = NULL; tp->ndata = tp->ndispose = tp->nnowriter = 0; ep->topic = tp; LIST_ADD_TAIL (topics, *tp); } else if (writer) { ep->link = tp->writers; tp->writers = ep; } else { ep->link = tp->readers; tp->readers = ep; } ep->writer = writer; ep->key = *key; if (ep->writer) { ep->data = *data; ep->data.topic_name = tp->topic_name; ep->data.type_name = tp->type_name; } LIST_ADD_TAIL (endpoints, *ep); /* Endpoint successfully added -- check if we need a reader. */ if (writer && !ep->link && auto_filter [0] && !nmatch (auto_filter, tp->topic_name, NM_CASEFOLD)) start_reader (part, tp); return (ep); }
void train_once_PerceptronModel(PerceptronModel mdl, const CoNLLCorpus corpus, int max_rec) { long match = 0, total = 0; //size_t slen=0; log_info("Total number of training instances %d", (max_rec == -1) ? DArray_count(corpus->sentences) : max_rec); for (int si = 0; si < ((max_rec == -1) ? DArray_count(corpus->sentences) : max_rec); si++) { //log_info("Parsing sentence %d/%d", si+1, DArray_count(corpus)); FeaturedSentence sent = (FeaturedSentence) DArray_get(corpus->sentences, si); start(&parser_rate); //debug("Building feature matrix for sentence %d of length %d", si, sent->length); //set_FeatureMatrix(NULL, corpus, si); //printfembedding(sent->feature_matrix, sent->length); debug("Building adjacency matrix for sentence %d of length %d", si, sent->length); build_adjacency_matrix(corpus, si, mdl->embedding_w, NULL); //printfmatrix(sent->adjacency_matrix, sent->length); //log_info("Adjacency matrix construction is done"); int *model = parse(sent); stop(&parser_rate); debug("Parsing sentence %d is done", si); int *empirical = get_parents(sent); /* log_info("Model:"); printfarch(model, sent->length); log_info("Empirical:"); printfarch(empirical, sent->length); */ int nm = nmatch(model, empirical, sent->length); debug("Model matches %d arcs out of %d arcs", nm, sent->length); if (nm != sent->length) { // root has no valid parent. if (corpus->disrete_patterns_parts) { log_info("I have discrete features"); DArray* model_features = DArray_create(sizeof (uint32_t), 16); DArray* empirical_features = DArray_create(sizeof (uint32_t), 16); for (int fi = 1; fi < sent->length; fi++) { fill_features(mdl->features->map, model_features, model[fi], fi, sent); fill_features(mdl->features->map, empirical_features, empirical[fi], fi, sent); } for (int i = 0; i < DArray_count(model_features); i++) { uint32_t *fidx = (uint32_t *) DArray_get(model_features, i); mdl->discrete_w->data[*fidx] -= 1.0; mdl->discrete_w_avg->data[*fidx] -= (mdl->c) * 1.0; mdl->discrete_w_temp->data[*fidx] -= 1.0; } for (int i = 0; i < DArray_count(empirical_features); i++) { uint32_t *fidx = (uint32_t *) DArray_get(empirical_features, i); mdl->discrete_w->data[*fidx] += 1.0; mdl->discrete_w_avg->data[*fidx] += (mdl->c) * 1.0; mdl->discrete_w_temp->data[*fidx] += 1.0; } DArray_destroy(model_features); DArray_destroy(empirical_features); } for (int i = 1; i <= sent->length; i++) { if (model[i] != empirical[i]){ // -1 for Model arch embedding_feature(sent, model[i], i, xformed_v); vadd(mdl->embedding_w, xformed_v, -1.0); vadd(mdl->embedding_w_temp, xformed_v, -1.0); vadd(mdl->embedding_w_avg, xformed_v, -(mdl->c)); // +1 for Gold arc embedding_feature(sent, empirical[i], i, xformed_v); vadd(mdl->embedding_w, xformed_v, 1.0); vadd(mdl->embedding_w_temp, xformed_v, 1.0); vadd(mdl->embedding_w_avg, xformed_v, (mdl->c)); } //free(real_embedding); //free(model_embedding); } } free_feature_matrix(corpus, si); mdl->c++; match += nm; total += (sent->length); if (si % 1000 == 0 && si > 0) { log_info("Running training accuracy %lf", (match * 1.) / total); } free(model); free(empirical); //free_sentence_structures(sent); } log_info("Running training accuracy %lf", (match * 1.) / total); if (corpus->disrete_patterns_parts) { for (int i = 0; i < mdl->n; i++) { // mdl->w_avg[i] /= (numit * DArray_count(corpus)); //mdl->w[i] -=(mdl->w_avg[i])/(mdl->c); mdl->discrete_w_temp->data[i] = mdl->discrete_w->data[i] - (mdl->discrete_w_avg->data[i]) / (mdl->c); } } //vadd(mdl->w_cont, mdl->w_cont_avg, -1./(mdl->c), SCODE_FEATURE_VECTOR_LENGTH); memcpy(mdl->embedding_w_temp->data, mdl->embedding_w->data, mdl->embedding_w->n * sizeof (float)); vadd(mdl->embedding_w_temp, mdl->embedding_w_avg, -1. / (mdl->c)); // free(mdl->w); // mdl->w = mdl->w_avg; //free_feature_matrix(sent); }
int main(void) { printf("%d\n", nmatch("bonjour", "**j**")); return (0); }
/* Return a pointer to the interface struct for the passed address. */ struct ifreq * getif(int s, struct in_addr *addrp) /* socket file descriptor */ /* destination address on interface */ { int maxmatch; int len, m, incr; struct ifreq *ifrq, *ifrmax; struct sockaddr_in *sip; char *p; /* If no address was supplied, just return NULL. */ if (!addrp) return (struct ifreq *) 0; /* Get the interface config if not done already. */ if (ifconf.ifc_len == 0) { #ifdef SVR4 /* * SysVr4 returns garbage if you do this the obvious way! * This one took a while to figure out... -gwr */ struct strioctl ioc; ioc.ic_cmd = SIOCGIFCONF; ioc.ic_timout = 0; ioc.ic_len = sizeof(ifreq); ioc.ic_dp = (char *) ifreq; m = ioctl(s, I_STR, (char *) &ioc); ifconf.ifc_len = ioc.ic_len; ifconf.ifc_req = ifreq; #else /* SVR4 */ ifconf.ifc_len = sizeof(ifreq); ifconf.ifc_req = ifreq; m = ioctl(s, SIOCGIFCONF, (caddr_t) & ifconf); #endif /* SVR4 */ if ((m < 0) || (ifconf.ifc_len <= 0)) { report(LOG_ERR, "ioctl SIOCGIFCONF"); return (struct ifreq *) 0; } } maxmatch = 7; /* this many bits or less... */ ifrmax = (struct ifreq *) 0;/* ... is not a valid match */ p = (char *) ifreq; len = ifconf.ifc_len; while (len > 0) { ifrq = (struct ifreq *) p; if (ifrq->ifr_addr.sa_family == AF_INET) { sip = (struct sockaddr_in *) &ifrq->ifr_addr; m = nmatch((u_char *)addrp, (u_char *)&(sip->sin_addr)); if (m > maxmatch) { maxmatch = m; ifrmax = ifrq; } } /* XXX - Could this be just #ifndef IFNAMSIZ instead? -gwr */ #if (BSD - 0) < 43 /* BSD not defined or earlier than 4.3 */ incr = sizeof(*ifrq); #else /* NetBSD */ incr = ifrq->ifr_addr.sa_len + IFNAMSIZ; #endif /* NetBSD */ p += incr; len -= incr; } return ifrmax; }
int *parsing_file(char *file_name, int *counter, llist l_args) { FILE *fp; FILE *np; char *line = NULL; size_t len = 0; ssize_t read; int i = 1; int comment_count = 0; DIR *d; char *directory = make_directory(l_args->directory, file_name); int sub_dir = l_args->pr_s; char *org_dir = l_args->directory; struct dirent *dir; if (nmatch(file_name, "*/..") == 1 || nmatch(file_name, "*/.") == 1 || nmatch(file_name, ".") == 1 || nmatch(file_name, "..") == 1 || nmatch(file_name, "no_comment") == 1) return (counter); counter[3] = counter[3] + 1; if (is_directory(file_name) == 1 && nmatch(file_name, org_dir) == 0) { d = opendir(file_name); if (d && sub_dir == 1) { printf(ANSI_COLOR_BLUE"!---> Reading directory '%s':\n"ANSI_COLOR_RESET, file_name); while ((dir = readdir(d)) != NULL) { check_directory(directory, 1); counter = parsing_file(make_directory(file_name, dir->d_name), counter, l_args); } printf(ANSI_COLOR_BLUE"End of directory '%s' <---!\n"ANSI_COLOR_RESET, file_name); return (counter); closedir(d); } return (counter); } printf("\n> Reading file: '%s'\n", file_name); printf("Destination: '%s'\n", directory); if ((fp = fopen(file_name, "r")) == NULL) { printf(ANSI_COLOR_RED"! Error while reading file '%s'\n" ANSI_COLOR_RESET , (file_name ? file_name : " ")); counter[1] = counter[1] + 1; return (counter); } if ((np = fopen(directory, "w+")) == NULL) { printf(ANSI_COLOR_RED"! Error while creating file '%s'\n"ANSI_COLOR_RESET , (file_name ? file_name : " ")); counter[1] = counter[1] + 1; return (counter); } counter[0] = counter[0] + 1; while ((read = getline(&line, &len, fp)) != -1) comment_count = write_file(np, line, comment_count); printf("Total of comments deleted: %d\n", comment_count); printf(ANSI_COLOR_GREEN "--> Done for %s\n\n"ANSI_COLOR_RESET, file_name); counter[2] = counter[2] + comment_count; return (counter); fclose(fp); fclose (np); }