/* $Header: /CVSROOT/debris/cmds/put.c,v 1.2 2005/08/15 01:04:52 tino Exp $ * * DebRIS: DEBian Remote Install Scripter * put {data} * * $Log: put.c,v $ * Revision 1.2 2005/08/15 01:04:52 tino * all functions now have a prefix (dris_) * * Revision 1.1 2005/08/13 22:59:12 tino * additional functions, see ChangeLog * */ static int driscmd_put(char *args) { const char *n; long long pos; char *end; int fd; n = dris_nextarg(&args); pos = strtoull(n, &end, 0); if (*end || !*n || pos<0) return dris_err("put: debris sends funny offset %s", n); if ((fd=open(args, O_CREAT|O_RDWR, 0755))<0) return dris_err("put: cannot create %s", args); if (lseek(fd, (off_t)pos, SEEK_SET)!=pos) return dris_err("put: cannot seek to %lld", pos); if (dris_writeall(fd, config.in->buf+config.data, config.in->len-config.data)) return dris_err("put: cannot write to %s", args); if (close(fd)) return dris_err("put: cannot close %s", args); return 0; }