/** * The "nstat" command * * @v argc Argument count * @v argv Argument list * @ret rc Return status code */ static int nstat_exec ( int argc, char **argv ) { struct nstat_options opts; int rc; /* Parse options */ if ( ( rc = parse_options ( argc, argv, &nstat_cmd, &opts ) ) != 0) return rc; nstat(); return 0; }
void main(int argc, char *argv[]) { int justinterfaces = 0; int i, tot, fd; Dir *d; char buf[128]; ARGBEGIN{ case 'i': justinterfaces = 1; break; case 'n': notrans = 1; break; case 'p': if(nproto >= nelem(proto)) sysfatal("too many protos"); proto[nproto++] = EARGF(usage()); break; default: usage(); }ARGEND; netroot = "/net"; switch(argc){ case 0: break; case 1: netroot = argv[0]; break; default: usage(); } Binit(&out, 1, OWRITE); if(justinterfaces){ pipifc(); exits(0); } if(nproto){ for(i=0; i<nproto; i++) nstat(proto[i], pip); }else{ fd = open(netroot, OREAD); if(fd < 0) sysfatal("open %s: %r", netroot); tot = dirreadall(fd, &d); for(i=0; i<tot; i++){ if(strcmp(d[i].name, "ipifc") == 0) continue; snprint(buf, sizeof buf, "%s/%s/0/local", netroot, d[i].name); if(access(buf, 0) >= 0) nstat(d[i].name, pip); } } exits(0); }
static void fsok(GtkWidget *dlg) { struct nGetOpenFileData *data; char *file, *file2, **farray; const char *filter_name; int i, k, len, n; GStatBuf buf; GSList *top, *list; GtkFileFilter *filter; data = &FileSelection; top = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dlg)); filter = gtk_file_chooser_get_filter(GTK_FILE_CHOOSER(dlg)); if (filter) { filter_name = gtk_file_filter_get_name(filter); } else { filter_name = NULL; } if (filter_name == NULL || strcmp(filter_name, _("All")) == 0) { data->ext = NULL; } n = g_slist_length(top); farray = g_malloc(sizeof(*farray) * (n + 1)); if (farray == NULL) { free_str_list(top); return; } data->file = farray; k = 0; for (list = top; list; list = list->next) { char *tmp; tmp = (char *) list->data; if (tmp == NULL || strlen(tmp) < 1) { gdk_beep(); continue; } file = get_utf8_filename(tmp); for (i = strlen(file) - 1; (i > 0) && (file[i] != '/') && (file[i] != '.'); i--); if ((file[i] != '.') && data->ext) { len = strlen(data->ext) + 1; } else { len = 0; } if (len) { file2 = g_strdup_printf("%s.%s", file, data->ext); g_free(file); } else { file2 = file; } if (file2) { if (data->mustexist) { if ((nstat(file2, &buf) != 0) || ((buf.st_mode & S_IFMT) != S_IFREG) || (naccess(file2, R_OK) != 0)) { gdk_beep(); error22(NULL, 0, "I/O error", file2); g_free(file2); continue; } } else { if ((nstat(file2, &buf) == 0) && ((buf.st_mode & S_IFMT) != S_IFREG)) { gdk_beep(); error22(NULL, 0, "I/O error", file2); g_free(file2); continue; } } farray[k] = file2; k++; } } if (k == 0) return; if (data->changedir && k > 0) { data->chdir = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->chdir_cb)); if (data->chdir && data->init_dir) { char *dir; g_free(*(data->init_dir)); dir = g_path_get_dirname(farray[0]); *(data->init_dir) = dir; } } farray[k] = NULL; free_str_list(top); data->ret = IDOK; }