Exemple #1
0
ul_result execute(app_ctx * ctx) {
	ul_page buffer[UL_WRPAGS];
	ul_result ret;

	unsigned int page = min(ctx->uldev.type->pages, ctx->startPage);
	unsigned int count = min(ctx->uldev.type->pages - page, ctx->pageCount);
	fprintf(stderr, "Writing %u pages starting at page 0x%02X (lenient: %s)\n", count, page, ctx->lenient ? "true" : "false");

	while (count > 0) {
		if (!fread(buffer, sizeof(buffer), 1, stdin)) {
			fprintf(stderr, "* End of input stream *\n");
			return UL_ERROR;
		}

		ret = ul_write(&ctx->uldev, page, buffer);
		if (ret) {
			fprintf(stderr, "* Error writing page 0x%02X (%d) *\n", page, ret);
			if (ctx->lenient == false || ret == UL_WRONGPASS) {
				return ret;
			}
		}

		page += UL_WRPAGS;
		count -= UL_WRPAGS;
	}

	return UL_OK;
}
Exemple #2
0
int ul_appfile(const char *path, const char *fsrc, const char *fdest)
{
	int pf_src, pf_dest;
	char filename[PATH_SIZE];
	char buf[TBUF_SIZE];
	ssize_t  real_read;

	if (ul_fullpath(path, fsrc, filename, sizeof(filename)) < 0) {
		return -1;
	}

	if (!ul_fexist(path, fsrc)) {
		ul_writelog(UL_LOG_FATAL, "[appfile] file : %s do not exist.\n", fsrc);
		return -1;
	}

	pf_src = ul_open(filename, O_RDONLY,0776);
	if (pf_src < 0) {
		ul_writelog(UL_LOG_FATAL,"[appfile] open %s error", fsrc);
		return -1;
	}

	if (ul_fullpath(path, fdest, filename, sizeof(filename)) < 0) {
		return -1;
	}

	pf_dest= ul_open(filename, O_WRONLY|O_APPEND|O_CREAT, 0666);
	if (pf_dest < 0) {
		ul_close(pf_src);
		ul_writelog(UL_LOG_FATAL, "[appfile] open %s error", fdest);
		return -1;
	}

	while((real_read=ul_read(pf_src, buf, TBUF_SIZE)) == TBUF_SIZE) {
		ul_write(pf_dest, buf, TBUF_SIZE);
	}
	ul_write(pf_dest, buf, (size_t)real_read);

	ul_close(pf_src);
	ul_close(pf_dest);

	return 1;
}
Exemple #3
0
ssize_t ul_writefile(const char *path, const char *fname, void *buf, int size)
{
	int fno;
	ssize_t rsize;
	char fullname[PATH_SIZE];
	
    if (ul_fullpath(path, fname, fullname, sizeof(fullname)) < 0) {
		return -1;
	}
	fno = ul_open(fullname, O_WRONLY|O_CREAT|O_TRUNC, 0666);
	fchmod (fno, 0666);
	if (fno < 0) {
		ul_writelog(UL_LOG_FATAL, "[writefile] open (%s) error", fullname);
		return -1;
	}
	rsize = ul_write(fno, buf, size);
	if (rsize < 0){
		ul_writelog(UL_LOG_FATAL, "[writefile] write(%s) error", fullname);
	}
	ul_close(fno);

	return rsize;
}