static void rcreate(Req *r) { Xfile *f; int inr, perm; chat("create(fid=%d,name=\"%s\",perm=%uo,mode=%d)...", thdr.fid, thdr.name, thdr.perm, thdr.mode); errno = 0; if(strcmp(thdr.name, ".") == 0 || strcmp(thdr.name, "..") == 0){ errno = Eperm; goto error; } f = xfile(r->fid, Asis); if( !f ){ errno = Eio; goto error; } if( strlen(thdr.name) > EXT2_NAME_LEN ){ chat("name too long ..."); errno = Elongname; goto error; } /* create */ errno = 0; if( thdr.perm & DMDIR ){ perm = (thdr.perm & ~0777) | (getmode(f) & thdr.perm & 0777); perm |= S_IFDIR; inr = create_dir(f, thdr.name, perm); }else{ perm = (thdr.perm & (~0777|0111)) | (getmode(f) & thdr.perm & 0666); perm |= S_IFREG; inr = create_file(f, thdr.name, perm); } if( inr < 0 ) goto error; /* fill with new inode */ f->pinbr = f->inbr; if( get_inode(f, inr) < 0 ){ errno = Eio; goto error; } r->fid->qid = (Qid){inr, 0, 0}; if( S_ISDIR(getmode(f)) ) r->fid->qid.type |= QTDIR; chat("f->qid=0x%8.8lux...", r->fid->qid.path); rhdr.qid = r->fid->qid; error: response(r); }
static void ropen(Req *r) { Xfile *f; chat("open(fid=%d,mode=%d)...", thdr.fid, thdr.mode); errno = 0; f = xfile(r->fid, Asis); if( !f ){ errno = Eio; goto error; } if(thdr.mode & OTRUNC){ if( !S_ISREG(getmode(f)) ){ errno = Eperm; goto error; } if(truncfile(f) < 0){ goto error; } } chat("f->qid=0x%8.8lux...", r->fid->qid.path); rhdr.qid = r->fid->qid; error: response(r); }
static void rwrite(Req *r) { Xfile *f; int nr; chat("write(fid=%d,offset=%lld,count=%d)...", thdr.fid, thdr.offset, thdr.count); errno = 0; if (!(f=xfile(r->fid, Asis)) ){ errno = Eio; goto error; } if( !S_ISREG(getmode(f)) ){ errno = Elink; goto error; } nr = writefile(f, thdr.data, thdr.offset, thdr.count); if(nr >= 0){ rhdr.count = nr; chat("rcnt=%d...OK\n", nr); respond(r, nil); return; } errno = Eio; error: response(r); }
int main(void){ rpi_init(); // JTAG用設定 // 3.3V : ARM_VREF // GPIO22 (ALT4): ARM_TRST // GPIO4 (ALT5): ARM_TDI // GPIO27 (ALT4): ARM_TMS // GPIO25 (ALT4): ARM_TCK // GPIO24 (ALT4): ARM_TDO // GND : ARM_GND pinMode(22, ALT4); pinMode(4, ALT5); pinMode(27, ALT4); pinMode(25, ALT4); pinMode(24, ALT4); // LED init pinMode(47,OUTPUT); printf("main: cpsr = %08x\n",getmode()); while(1){ digitalWrite(47, HIGH); delay(1000); digitalWrite(47, LOW); delay(1000); _swi_caller(10); } return 0; }
int ls(const char *path) { struct stat __stat, *stat = &__stat; int ret, type; if ((ret = getstat(path, stat)) != 0) { return ret; } static const char *filetype[] = { " [ file ]", " [directory]", " [ symlink ]", " [character]", " [ block ]", " [ ????? ]", }; switch (getmode(stat->st_mode)) { case '0': type = 0; break; case 'd': type = 1; break; case 'l': type = 2; break; case 'c': type = 3; break; case 'b': type = 4; break; default: type = 5; break; } printf(" @ is %s", filetype[type]); printf(" %d(hlinks)", stat->st_nlinks); printf(" %d(blocks)", stat->st_blocks); printf(" %d(bytes) : @'%s'\n", stat->st_size, path); if (S_ISDIR(stat->st_mode)) { return lsdir(path); } return 0; }
//------------------------------------------------------------------------------ void SdStreamBase::putch(char c) { if (c == '\n' && !(getmode() & ios::binary)) { write('\r'); } write(c); if (writeError) setstate(badbit); }
arg_t _acct(void) { #ifdef CONFIG_ACCT inoptr inode; if (esuper()) return -1; if (acct_fh != -1) oft_deref(acct_fh); if (fd != -1) { if ((inode = getinode(fd)) == NULLINODE) return -1; if (getmode(inode) != F_REG) { udata.u_error = EINVAL; return -1; } if (inode->c_flags & CRDONLY) { udata.u_error = EROFS; return -1; } acct_fh = udata.u_files[fd]; ++of_tab[acct_fh].o_refs; } return 0; #else udata.u_error = EINVAL; return -1; #endif }
static char * rwalk1(Fid *fid, char *name, Qid *qid) { Xfile *f=xfile(fid, Asis); int nr, sinbr = 0; chat("walk1(fid=%d,name=\"%s\")...", fid->fid, name); errno = 0; if( !f ){ chat("no xfile..."); goto error; } if( !(fid->qid.type & QTDIR) ){ chat("qid.type=0x%x...", fid->qid.type); goto error; } sinbr = f->pinbr; if( name == 0 || name[0] == 0 || !strcmp(name, ".") ){ *qid = fid->qid; goto ok; }else if( !strcmp(name, "..") ){ if( fid->qid.path == f->xf->rootqid.path ){ chat("walkup from root..."); *qid = fid->qid; goto ok; } if( get_inode(f, f->pinbr) < 0 ) goto error; if( f->pinbr == EXT2_ROOT_INODE ){ *qid = f->xf->rootqid; f->pinbr = EXT2_ROOT_INODE; } else { *qid = (Qid){f->pinbr,0,QTDIR}; f->inbr = f->pinbr; if( (nr = get_file(f, "..")) < 0 ) goto error; f->pinbr = nr; } }else{ f->pinbr = f->inbr; if( (nr = get_file(f, name)) < 0 ) goto error; if( get_inode(f, nr) < 0 ) goto error; *qid = (Qid){nr,0,0}; if( nr == EXT2_ROOT_INODE ) *qid = f->xf->rootqid; else if( S_ISDIR(getmode(f)) ) qid->type = QTDIR; /*strcpy(f->name, thdr.name);*/ } ok: chat("OK\n"); return 0; error: f->pinbr = sinbr; chat("%s\n", xerrstr(Enonexist)); return xerrstr(Enonexist); }
static int pkg_set_files_from_node(struct pkg *pkg, yaml_node_t *item, yaml_document_t *doc, const char *filename) { yaml_node_pair_t *pair = NULL; yaml_node_t *key = NULL; yaml_node_t *val = NULL; const char *sum = NULL; const char *uname = NULL; const char *gname = NULL; void *set = NULL; mode_t perm = 0; pair = item->data.mapping.pairs.start; while (pair < item->data.mapping.pairs.top) { key = yaml_document_get_node(doc, pair->key); val = yaml_document_get_node(doc, pair->value); if (key->data.scalar.length <= 0) { pkg_emit_error("Skipping malformed file entry for %s", filename); ++pair; continue; } if (val->type != YAML_SCALAR_NODE || val->data.scalar.length <= 0) { pkg_emit_error("Skipping malformed file entry for %s", filename); ++pair; continue; } if (!strcasecmp(key->data.scalar.value, "uname")) uname = val->data.scalar.value; else if (!strcasecmp(key->data.scalar.value, "gname")) gname = val->data.scalar.value; else if (!strcasecmp(key->data.scalar.value, "sum") && val->data.scalar.length == 64) sum = val->data.scalar.value; else if (!strcasecmp(key->data.scalar.value, "perm")) { if ((set = setmode(val->data.scalar.value)) == NULL) pkg_emit_error("Not a valid mode: %s", val->data.scalar.value); else perm = getmode(set, 0); } else { pkg_emit_error("Skipping unknown key for file(%s): %s", filename, key->data.scalar.value); } ++pair; } if (key != NULL) pkg_addfile_attr(pkg, key->data.scalar.value, sum, uname, gname, perm, false); return (EPKG_OK); }
static void safe_stat(const char *name) { struct stat __stat, *stat = &__stat; int fd = open(name, O_RDONLY), ret = fstat(fd, stat); assert(fd >= 0 && ret == 0); printf("%c %3d %4d %10d ", getmode(stat->st_mode), stat->st_nlinks, stat->st_blocks, stat->st_size); }
void lsstat(struct stat *stat, const char *filename) { printf(" [%c]", getmode(stat->st_mode)); printf(" %3d(h)", stat->st_nlinks); printf(" %8d(b)", stat->st_blocks); printf(" %8d(s)", stat->st_size); printf(" %s\n", filename); }
int main(int argc, char *argv[]) { const char *modestr = NULL; const void *modep; mode_t fifomode; int ch, exitval; #ifdef SHELL while ((ch = nextopt("m:")) != '\0') #else while ((ch = getopt(argc, argv, "m:")) != -1) #endif switch(ch) { case 'm': f_mode = 1; #ifdef shell modestr = shoptarg; #else modestr = optarg; #endif break; case '?': default: usage(); } #ifdef SHELL argc -= argptr - argv; argv = argptr; #else argc -= optind; argv += optind; #endif if (argv[0] == NULL) usage(); if (f_mode) { umask(0); errno = 0; if ((modep = setmode(modestr)) == NULL) { if (errno) err(1, "%s", "setmode"); errx(1, "invalid file mode: %s", modestr); } fifomode = getmode(modep, BASEMODE); } else { fifomode = BASEMODE; } for (exitval = 0; *argv != NULL; ++argv) if (mkfifo(*argv, fifomode) < 0) { warn("%s", *argv); exitval = 1; } return(exitval); }
int main(){ int arr_1[10] = {1,3,10,5,4,8,12,5,6,7}; sort(arr_1, 10); std::cout << " "<< std::endl; print_array(arr_1,10); std::cout << " "<< std::endl; std::cout << "The Median is: " << getMedian(arr_1,10) << std::endl; std::cout << "The Mode is: " << getmode(arr_1, 10) << std::endl; }
arg_t _link(void) { inoptr ino; inoptr ino2; inoptr parent2; char fname[FILENAME_LEN + 1]; if (!(ino = n_open(name1, NULLINOPTR))) return (-1); if (getmode(ino) == F_DIR && esuper()) goto nogood; if (ino->c_node.i_nlink == 0xFFFF) { udata.u_error = EMLINK; goto nogood; } /* Make sure file2 doesn't exist, and get its parent */ if ((ino2 = n_open(name2, &parent2)) != NULL) { i_deref(ino2); i_deref(parent2); udata.u_error = EEXIST; goto nogood; } if (!parent2) goto nogood; if (ino->c_dev != parent2->c_dev) { i_deref(parent2); udata.u_error = EXDEV; goto nogood; } filename(name2, fname); if (!ch_link(parent2, "", fname, ino)) { i_deref(parent2); goto nogood; } /* Update the link count. */ ++ino->c_node.i_nlink; wr_inode(ino); setftime(ino, C_TIME); i_deref(parent2); i_deref(ino); return 0; nogood: i_deref(ino); return -1; }
static arg_t chdiroot_op(inoptr ino, inoptr * p) { if (getmode(ino) != F_DIR) { udata.u_error = ENOTDIR; i_deref(ino); return (-1); } i_deref(*p); *p = ino; return 0; }
static int c_mknod(char **wp) { int argc, optc, ismkfifo = 0, ret; char **argv; void *set = NULL; mode_t mode = 0, oldmode = 0; while ((optc = ksh_getopt(wp, &builtin_opt, "m:")) != -1) { switch (optc) { case 'm': set = setmode(builtin_opt.optarg); if (set == NULL) { bi_errorf("invalid file mode"); return 1; } mode = getmode(set, DEFFILEMODE); free(set); break; default: goto usage; } } argv = &wp[builtin_opt.optind]; if (argv[0] == NULL) goto usage; for (argc = 0; argv[argc]; argc++) ; if (argc == 2 && argv[1][0] == 'p') { ismkfifo = 1; argc--; } else if (argc != 4) goto usage; if (set) oldmode = umask(0); else mode = DEFFILEMODE; if (ismkfifo) ret = domkfifo(argc, argv, mode); else ret = domknod(argc, argv, mode); if (set) umask(oldmode); return ret; usage: builtin_argv0 = NULL; bi_errorf("usage: mknod [-m mode] name b|c major minor"); bi_errorf("usage: mknod [-m mode] name p"); return 1; }
static int pkg_set_dirs_from_node(struct pkg *pkg, yaml_node_t *item, yaml_document_t *doc, const char *dirname) { yaml_node_pair_t *pair; yaml_node_t *key; yaml_node_t *val; const char *uname = NULL; const char *gname = NULL; void *set; mode_t perm = 0; bool try = false; pair = item->data.mapping.pairs.start; while (pair < item->data.mapping.pairs.top) { key = yaml_document_get_node(doc, pair->key); val = yaml_document_get_node(doc, pair->value); if (key->data.scalar.length <= 0) { pkg_emit_error("Skipping malformed file entry for %s", dirname); ++pair; continue; } if (val->type != YAML_SCALAR_NODE || val->data.scalar.length <= 0) { pkg_emit_error("Skipping malformed file entry for %s", dirname); ++pair; continue; } if (!strcasecmp(key->data.scalar.value, "uname")) uname = val->data.scalar.value; else if (!strcasecmp(key->data.scalar.value, "gname")) gname = val->data.scalar.value; else if (!strcasecmp(key->data.scalar.value, "perm")) { if ((set = setmode(val->data.scalar.value)) == NULL) pkg_emit_error("Not a valid mode: %s", val->data.scalar.value); else perm = getmode(set, 0); } else if (!strcasecmp(key->data.scalar.value, "try")) { if (val->data.scalar.value[0] == 'n') try = false; else if (val->data.scalar.value[0] == 'y') try = true; else pkg_emit_error("Wrong value for try: %s, " "expected 'y' or 'n'", val->data.scalar.value); } else {
//------------------------------------------------------------------------------ void SdStreamBase::putstr(const char* str) { uint16_t n = 0; while (1) { char c = str[n]; if (c == '\0' || (c == '\n' && !(getmode() & ios::binary))) { if (n > 0) write(str, n); if (c == '\0') break; write('\r'); str += n; n = 0; } n++; } if (writeError) setstate(badbit); }
void revmodel::mute() { int i; if (getmode() >= freezemode) return; for (i = 0; i < numcombs; i++) { combL[i].mute(); combR[i].mute(); } for (i = 0; i < numallpasses; i++) { allpassL[i].mute(); allpassR[i].mute(); } }
void revmodel::mute() { if (getmode() >= freezemode) return; for (int j=0;j<numcombs;j++) { combL[j].mute(); combR[j].mute(); } for (int k=0;k<numallpasses;k++) { allpassL[k].mute(); allpassR[k].mute(); } }
static int pkg_set_files_from_object(struct pkg *pkg, ucl_object_t *obj) { ucl_object_t *cur; ucl_object_iter_t it = NULL; const char *sum = NULL; const char *uname = NULL; const char *gname = NULL; void *set = NULL; mode_t perm = 0; struct sbuf *fname = NULL; const char *key, *okey; okey = ucl_object_key(obj); if (okey == NULL) return (EPKG_FATAL); urldecode(okey, &fname); while ((cur = ucl_iterate_object(obj, &it, true))) { key = ucl_object_key(cur); if (key == NULL) continue; if (!strcasecmp(key, "uname") && cur->type == UCL_STRING) uname = ucl_object_tostring(cur); else if (!strcasecmp(key, "gname") && cur->type == UCL_STRING) gname = ucl_object_tostring(cur); else if (!strcasecmp(key, "sum") && cur->type == UCL_STRING && strlen(ucl_object_tostring(cur)) == 64) sum = ucl_object_tostring(cur); else if (!strcasecmp(key, "perm") && (cur->type == UCL_STRING || cur->type == UCL_INT)) { if ((set = setmode(ucl_object_tostring_forced(cur))) == NULL) pkg_emit_error("Not a valid mode: %s", ucl_object_tostring(cur)); else perm = getmode(set, 0); } else { pkg_emit_error("Skipping unknown key for file(%s): %s", sbuf_data(fname), ucl_object_tostring(cur)); } } pkg_addfile_attr(pkg, sbuf_data(fname), sum, uname, gname, perm, false); sbuf_delete(fname); return (EPKG_OK); }
aclent_t getentry(acl_entry_t acl_entry, struct stat st, int acl_default) { aclent_t aclent; acl_tag_t e_type; acl_get_tag_type(acl_entry, &e_type); acl_permset_t permset; acl_get_permset(acl_entry, &permset); void *qualifier = acl_get_qualifier(acl_entry); aclent.a_perm = getmode(permset); switch(e_type) { case ACL_USER_OBJ: aclent.a_id = st.st_uid; break; case ACL_USER: aclent.a_id = *(uid_t*)qualifier; break; case ACL_GROUP_OBJ: aclent.a_id = st.st_gid; break; case ACL_GROUP: aclent.a_id = *(gid_t*)qualifier; break; case ACL_MASK: aclent.a_id = -1; break; case ACL_OTHER: aclent.a_id = -1; break; } aclent.a_type = e_type | acl_default; if(qualifier != NULL) { acl_free(qualifier); } return aclent; }
//============================================================================== /// @cond SHOW_PROTECTED int16_t SdStreamBase::getch() { uint8_t c; int8_t s = read(&c, 1); if (s != 1) { if (s < 0) { setstate(badbit); } else { setstate(eofbit); } return -1; } if (c != '\r' || (getmode() & ios::binary)) return c; s = read(&c, 1); if (s == 1 && c == '\n') return c; if (s == 1) seekCur(-1); return '\r'; }
int set_readonly(const char *newname) { mode_t mode; /* Symlinks don't have modes (and it affects instead the files they point to so just ignore the command if this is a symlink. */ if(issymlink(newname)) return 0; mode = getmode(newname); /* Remove all the writable characteristics of this file */ mode = (mode & (~(S_IWGRP | S_IWOTH | S_IWUSR))); /* Change the mode */ chmod(newname, mode); return 0; }
/* We copy the 32bit offset in and out rather than passing it as a 32bit OS might */ arg_t _lseek(void) { inoptr ino; struct oft *o; off_t p; off_t n; if (uget(offset, &n, sizeof(n))) return -1; if ((ino = getinode(file)) == NULLINODE) return (-1); if (getmode(ino) == MODE_R(F_PIPE)) { udata.u_error = ESPIPE; return (-1); } o = &of_tab[udata.u_files[file]]; p = o->o_ptr; switch (flag) { case 0: p = n; break; case 1: p += n; break; case 2: p = ino->c_node.i_size + n; break; default: goto bad; } if (p < 0) goto bad; o->o_ptr = p; uput(&p, offset, sizeof(n)); return 0; bad: udata.u_error = EINVAL; return (-1); }
int main(int argc, char *argv[]) { int ch, exitval; void *set; mode_t mode; setlocale (LC_ALL, ""); /* The default mode is the value of the bitwise inclusive or of S_IRUSR, S_IWUSR, S_IRGRP, S_IWGRP, S_IROTH, and S_IWOTH modified by the file creation mask */ mode = 0666 & ~umask(0); while ((ch = getopt(argc, argv, "m:")) != -1) switch(ch) { case 'm': if (!(set = setmode(optarg))) { err(1, "Cannot set file mode `%s'", optarg); /* NOTREACHED */ } /* In symbolic mode strings, the + and - operators are interpreted relative to an assumed initial mode of a=rw. */ mode = getmode(set, 0666); free(set); break; case '?': default: usage(); } argc -= optind; argv += optind; if (argv[0] == NULL) usage(); for (exitval = 0; *argv; ++argv) { if (mkfifo(*argv, mode) < 0) { warn("%s", *argv); exitval = 1; } } exit(exitval); }
int main(int argc, char *argv[]) { const char *modestr = NULL; const void *modep; mode_t fifomode; int ch, exitval; while ((ch = getopt(argc, argv, "m:")) != -1) switch(ch) { case 'm': f_mode = 1; modestr = optarg; break; case '?': default: usage(); } argc -= optind; argv += optind; if (argv[0] == NULL) usage(); if (f_mode) { umask(0); errno = 0; if ((modep = setmode(modestr)) == NULL) { if (errno) err(1, "setmode"); errx(1, "invalid file mode: %s", modestr); } fifomode = getmode(modep, BASEMODE); } else { fifomode = BASEMODE; } for (exitval = 0; *argv != NULL; ++argv) if (mkfifo(*argv, fifomode) < 0) { warn("%s", *argv); exitval = 1; } exit(exitval); }
/* Helper for the bits shared with rename */ int16_t unlinki(inoptr ino, inoptr pino, char *fname) { if (getmode(ino) == F_DIR) { udata.u_error = EISDIR; return -1; } /* Remove the directory entry (ch_link checks perms) */ if (!ch_link(pino, fname, "", NULLINODE)) return -1; /* Decrease the link count of the inode */ if (!(ino->c_node.i_nlink--)) { ino->c_node.i_nlink += 2; kprintf("_unlink: bad nlink\n"); } setftime(ino, C_TIME); return (0); }
main(int argc, char *argv[]) { char name[64]; int pid, cmd, segment, i, active; pid = getpid(); color = 0x000B + (pid % 5); // avoid black on black baground printf("enter main() : argc = %d\n", argc); for (i=0; i<argc; i++) printf("argv[%d] = %s\n", i, argv[i]); while(1){ pid = getpid(); active = getmode(); color = 0x000B + (pid % 5); segment = (pid+1)*0x1000; printf("==============================================\n"); printf("I am proc %din U mode: segment=%x active=%d\n", pid, segment,active); show_menu(); printf("Command ? "); gets(name); if (name[0]==0) continue; cmd = find_cmd(name); switch(cmd){ case 0 : getpid(); break; case 1 : ps(); break; case 2 : chname(); break; case 3 : kmode(); break; case 4 : uswitch(); break; case 5 : uwait(); break; case 6 : uexit(); break; case 7 : ufork(); break; case 8 : uexec(); break; default: invalid(name); break; } } }
int main(void) { uint8_t mode; // set which tunes are played for foil or epee modes set_tune(); // infinite loop to wait for PCI interrupt and process hit while(1) { cli(); mode = getmode(); // got mode --- foil or !foil DDRB = 0; // set all pins to input to save power PORTB = 0xFF; // set pullups set_sleep_mode(SLEEP_MODE_PWR_DOWN); // set sleep mode // set up PCI interrupts PCMSK |= _BV(INPIN); // enable PCI interrupt on INPIN GIFR = _BV(PCIF); // clear any pending PCI interrupts GIMSK |= _BV(PCIE); // enable pin change interrupt sei(); // enable interrupts // go to sleep until there is an interrupt sleep_mode(); if (mode) { PLAYTIME = epee_song; epee_handle(); } else { PLAYTIME = foil_song; foil_handle(); } } // end infinite while loop }