本文整理汇总了C++中clearerr函数的典型用法代码示例。如果您正苦于以下问题:C++ clearerr函数的具体用法?C++ clearerr怎么用?C++ clearerr使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了clearerr函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: anak_kirim
//.........这里部分代码省略.........
_("Mulai dibaca di bita %1$i sebesar %2$lu bita"),
penunjuk_berkas+panjang_geser_akhir, panjang_pesan
);
};
// Bila telah selesai.
// Kecuali bila aturan.transferedcheck=true
// maka penghentian melihat bita terterima Peladen
// bukan bila berkas kosong. Berguna bila merupakan
// sambungan paralel sehingga saat pecahan melebihi ukuran,
// tidak langsung menghentikan.
if (
(!panjang_pesan
&& !aturan.transferedcheck)
||
(!panjang_pesan
&& (
kirim->ukuran_kirim
> kirim->ukuran_berkas+(CHUNK_MESSAGE_SIZE*10)
)
)
){
DEBUG3(_("Panjang pesan akhir adalah %1$i bita"), panjang_pesan);
if(feof(pberkas)!=0){
// Selesai kirim.
char penyangga_feof[ukuberkas_panjang];
INFO(
_("Berkas '%1$s' dengan ukuran %2$s (%3$.0lf bita) telah selesai dikirim."),
nama_berkas,
readable_fs(kirim->ukuran_berkas, penyangga_feof),
kirim->ukuran_berkas
);
memset(penyangga_feof, 0, ukuberkas_panjang);
clearerr(pberkas);
}else if(ferror(pberkas)!=0){
// Kesalahan.
FAIL(
_("Gagal membaca berkas '%1$s': %2$s (%3$i)."),
nama_berkas, strerror(errno), errno
);
clearerr(pberkas);
exit(EXIT_FAILURE_IO);
}else{
// Kesalahan.
WARN(
_("Kesalahan berkas yang tidak diketahui: %1$s (%2$i)."),
strerror(errno), errno
);
};
// Pesan.
DEBUG1(_("Mengirim panji '%1$s'."),_("Henti"));
panji=STOP_FLAG;
// Mengirim panji STOP
// dan keluar dari perulangan.
DEBUG1(_("Menghentikan pengulangan pengiriman."), 0);
kirim->do_kirim=false;
}else{
// Pesan.
DEBUG3(_("Panjang pesan adalah %1$i bita"), panjang_pesan);
};
};
// Bangun pesan.
开发者ID:bayuah,项目名称:kancil,代码行数:67,代码来源:klien-anak.c
示例2: start
//.........这里部分代码省略.........
extern char *SVN;
#endif
char version[20];
lcleartext(NIL);
#ifdef HAVE_WX
strcpy(version,"6.0");
strcat(version,SVN);
#else
strcpy(version,"5.6");
#endif
ndprintf(stdout, message_texts[WELCOME_TO], version);
new_line(stdout);
}
}
#ifdef HAVE_WX
setvalnode__caseobj(LogoVersion, make_floatnode(6.0));
#else
setvalnode__caseobj(LogoVersion, make_floatnode(5.6));
#endif
setflag__caseobj(LogoVersion, VAL_BURIED);
argv2 = argv; argc2 = argc;
if (!strcmp(*argv+strlen(*argv)-4, "logo")) {
argv++;
while (--argc > 0 && strcmp(*argv, "-") && NOT_THROWING) {
argv++;
}
}
argv++;
while (--argc > 0) {
if (command_line == NIL)
cl_tail = command_line = cons(make_static_strnode(*argv++), NIL);
else {
setcdr(cl_tail, cons(make_static_strnode(*argv++), NIL));
cl_tail = cdr(cl_tail);
}
}
setvalnode__caseobj(CommandLine, command_line);
silent_load(Startuplg, logolib);
silent_load(Startup, NULL); /* load startup.lg */
if (!strcmp(*argv2+strlen(*argv2)-4, "logo")) {
argv2++;
while (--argc2 > 0 && strcmp(*argv2, "-") && NOT_THROWING) {
silent_load(NIL,*argv2++);
}
}
for (;;) {
if (NOT_THROWING) {
check_reserve_tank();
current_line = reader(stdin,"? ");
#ifdef __RZTC__
(void)feof(stdin);
if (!in_graphics_mode)
printf(" \b");
fflush(stdout);
#endif
#ifndef WIN32
if (feof(stdin) && !isatty(0)) lbye(NIL);
#endif
#ifdef __RZTC__
if (feof(stdin)) clearerr(stdin);
#endif
if (NOT_THROWING) {
exec_list = parser(current_line, TRUE);
if (exec_list != NIL) eval_driver(exec_list);
}
}
#ifdef HAVE_WX
if (wx_leave_mainloop) {
break;
}
#endif
if (stopping_flag == THROWING) {
if (isName(throw_node, Name_error)) {
err_print(NULL);
} else if (isName(throw_node, Name_system))
break;
else if (!isName(throw_node, Name_toplevel)) {
err_logo(NO_CATCH_TAG, throw_node);
err_print(NULL);
}
stopping_flag = RUN;
}
if (stopping_flag == STOP || stopping_flag == OUTPUT) {
/* ndprintf(stdout, "%t\n", message_texts[CANT_STOP]); */
stopping_flag = RUN;
}
}
//prepare_to_exit(TRUE);
exit(0);
return 0;
}
开发者ID:Distrotech,项目名称:ucblogo,代码行数:101,代码来源:main.c
示例3: LogCollectorStart
//.........这里部分代码省略.........
f_check++;
/* Checking which file is available */
for(i = 0; i <= max_file; i++)
{
if(!logff[i].fp)
{
/* Run the command. */
if(logff[i].command && (f_check %2))
{
curr_time = time(0);
if((curr_time - logff[i].size) >= logff[i].ign)
{
logff[i].size = curr_time;
logff[i].read(i, &r, 0);
}
}
continue;
}
/* Windows with IIS logs is very strange.
* For some reason it always returns 0 (not EOF)
* the fgetc. To solve this problem, we always
* pass it to the function pointer directly.
*/
#ifndef WIN32
/* We check for the end of file. If is returns EOF,
* we don't attempt to read it.
*/
if((r = fgetc(logff[i].fp)) == EOF)
{
clearerr(logff[i].fp);
continue;
}
/* If it is not EOF, we need to return the read character */
ungetc(r, logff[i].fp);
#endif
/* Finally, send to the function pointer to read it */
logff[i].read(i, &r, 0);
/* Checking for error */
if(!ferror(logff[i].fp))
{
/* Clearing EOF */
clearerr(logff[i].fp);
/* Parsing error */
if(r != 0)
{
logff[i].ign++;
}
}
/* If ferror is set */
else
{
merror(FREAD_ERROR, ARGV0, logff[i].file, errno, strerror(errno));
#ifndef WIN32
if(fseek(logff[i].fp, 0, SEEK_END) < 0)
#else
开发者ID:reyjrar,项目名称:ossec-hids,代码行数:67,代码来源:logcollector.c
示例4: log_record
//.........这里部分代码省略.........
log_format_trq_timestamp(time_formatted_str, sizeof(time_formatted_str));
}
/*
* Looking for the newline characters and splitting the output message
* on them. Sequence "\r\n" is mapped to the single newline.
*/
start = (char *)text;
while (1)
{
for (end = start; *end != '\n' && *end != '\r' && *end != '\0'; end++)
;
nchars = end - start;
if (*end == '\r' && *(end + 1) == '\n')
end++;
while (tryagain)
{
if (eventclass != PBS_EVENTCLASS_TRQAUTHD)
{
rc = fprintf(logfile,
"%02d/%02d/%04d %02d:%02d:%02d;%04x;%10.10s.%d;%s;%s;%s%.*s\n",
ptm->tm_mon + 1,
ptm->tm_mday,
ptm->tm_year + 1900,
ptm->tm_hour,
ptm->tm_min,
ptm->tm_sec,
(eventtype & ~PBSEVENT_FORCE),
msg_daemonname,
thr_id,
class_names[objclass],
objname,
(text == start ? "" : "[continued]"),
(int)nchars,
start);
}
else
{
rc = fprintf(logfile,
"%s %s%.*s\n",
time_formatted_str,
(text == start ? "" : "[continued]"),
(int)nchars,
start);
}
if ((rc < 0) &&
(errno == EPIPE) &&
(tryagain == 2))
{
/* the log file descriptor has been changed--it now points to a socket!
* reopen log and leave the previous file descriptor alone--do not close it */
log_opened = 0;
log_open(NULL, log_directory);
tryagain--;
}
else
{
tryagain = 0;
}
}
if (rc < 0)
break;
if (*end == '\0')
break;
start = end + 1;
} /* END while (1) */
fflush(logfile);
if (rc < 0)
{
rc = errno;
clearerr(logfile);
savlog = logfile;
logfile = fopen("/dev/console", "w");
/* we need to add this check to make sure the disk isn't full so we don't segfault
* if we can't open this then we're going to have a nice surprise failure */
if (logfile != NULL)
{
pthread_mutex_unlock(log_mutex);
log_err(rc, __func__, "PBS cannot write to its log");
fclose(logfile);
pthread_mutex_lock(log_mutex);
}
logfile = savlog;
}
pthread_mutex_unlock(log_mutex);
return;
} /* END log_record() */
开发者ID:braddaw,项目名称:torque-1,代码行数:101,代码来源:pbs_log.c
示例5: tui_set_source_content
/* Function to display source in the source window. */
enum tui_status
tui_set_source_content (struct symtab *s,
int line_no,
int noerror)
{
enum tui_status ret = TUI_FAILURE;
if (s != (struct symtab *) NULL && s->filename != (char *) NULL)
{
FILE *stream;
int i, desc, c, line_width, nlines;
char *src_line = 0;
if ((ret = tui_alloc_source_buffer (TUI_SRC_WIN)) == TUI_SUCCESS)
{
line_width = TUI_SRC_WIN->generic.width - 1;
/* Take hilite (window border) into account, when
calculating the number of lines. */
nlines = (line_no + (TUI_SRC_WIN->generic.height - 2)) - line_no;
desc = open_source_file (s);
if (desc < 0)
{
if (!noerror)
{
char *name = alloca (strlen (s->filename) + 100);
sprintf (name, "%s:%d", s->filename, line_no);
print_sys_errmsg (name, errno);
}
ret = TUI_FAILURE;
}
else
{
if (s->line_charpos == 0)
find_source_lines (s, desc);
if (line_no < 1 || line_no > s->nlines)
{
close (desc);
printf_unfiltered (
"Line number %d out of range; %s has %d lines.\n",
line_no, s->filename, s->nlines);
}
else if (lseek (desc, s->line_charpos[line_no - 1], 0) < 0)
{
close (desc);
perror_with_name (s->filename);
}
else
{
int offset, cur_line_no, cur_line, cur_len, threshold;
struct tui_gen_win_info *locator = tui_locator_win_info_ptr ();
struct tui_source_info *src = &TUI_SRC_WIN->detail.source_info;
if (TUI_SRC_WIN->generic.title)
xfree (TUI_SRC_WIN->generic.title);
TUI_SRC_WIN->generic.title = xstrdup (s->filename);
if (src->filename)
xfree (src->filename);
src->filename = xstrdup (s->filename);
/* Determine the threshold for the length of the
line and the offset to start the display. */
offset = src->horizontal_offset;
threshold = (line_width - 1) + offset;
stream = fdopen (desc, FOPEN_RT);
clearerr (stream);
cur_line = 0;
src->gdbarch = get_objfile_arch (s->objfile);
src->start_line_or_addr.loa = LOA_LINE;
cur_line_no = src->start_line_or_addr.u.line_no = line_no;
if (offset > 0)
src_line = (char *) xmalloc (
(threshold + 1) * sizeof (char));
while (cur_line < nlines)
{
struct tui_win_element *element = (struct tui_win_element *)
TUI_SRC_WIN->generic.content[cur_line];
/* Get the first character in the line. */
c = fgetc (stream);
if (offset == 0)
src_line = ((struct tui_win_element *)
TUI_SRC_WIN->generic.content[
cur_line])->which_element.source.line;
/* Init the line with the line number. */
sprintf (src_line, "%-6d", cur_line_no);
cur_len = strlen (src_line);
i = cur_len -
((cur_len / tui_default_tab_len ()) * tui_default_tab_len ());
while (i < tui_default_tab_len ())
{
src_line[cur_len] = ' ';
i++;
cur_len++;
}
src_line[cur_len] = (char) 0;
//.........这里部分代码省略.........
开发者ID:godaccess,项目名称:macgdb,代码行数:101,代码来源:tui-source.c
示例6: main
//.........这里部分代码省略.........
pagesegmode == tesseract::PSM_OSD_ONLY) {
int ret_val = 0;
if (!pixs)
pixs = pixRead(image);
if (!pixs) {
fprintf(stderr, "Cannot open input file: %s\n", image);
exit(2);
}
api.SetImage(pixs);
if (pagesegmode == tesseract::PSM_OSD_ONLY) {
OSResults osr;
if (api.DetectOS(&osr)) {
int orient = osr.best_result.orientation_id;
int script_id = osr.get_best_script(orient);
float orient_oco = osr.best_result.oconfidence;
float orient_sco = osr.best_result.sconfidence;
tprintf("Orientation: %d\nOrientation in degrees: %d\n" \
"Orientation confidence: %.2f\n" \
"Script: %d\nScript confidence: %.2f\n",
orient, OrientationIdToValue(orient), orient_oco,
script_id, orient_sco);
} else {
ret_val = 1;
}
} else {
tesseract::Orientation orientation;
tesseract::WritingDirection direction;
tesseract::TextlineOrder order;
float deskew_angle;
tesseract::PageIterator* it = api.AnalyseLayout();
if (it) {
it->Orientation(&orientation, &direction, &order, &deskew_angle);
tprintf("Orientation: %d\nWritingDirection: %d\nTextlineOrder: %d\n" \
"Deskew angle: %.4f\n",
orientation, direction, order, deskew_angle);
} else {
ret_val = 1;
}
delete it;
}
pixDestroy(&pixs);
exit(ret_val);
}
tesseract::TessResultRenderer* renderer = NULL;
bool b;
api.GetBoolVariable("tessedit_create_hocr", &b);
if (b && renderer == NULL) renderer = new tesseract::TessHOcrRenderer();
api.GetBoolVariable("tessedit_create_pdf", &b);
if (b && renderer == NULL)
renderer = new tesseract::TessPDFRenderer(api.GetDatapath());
api.GetBoolVariable("tessedit_create_boxfile", &b);
if (b && renderer == NULL) renderer = new tesseract::TessBoxTextRenderer();
if (renderer == NULL) renderer = new tesseract::TessTextRenderer();
if (pixs) {
api.ProcessPage(pixs, 0, NULL, NULL, 0, renderer);
pixDestroy(&pixs);
} else {
FILE* fin = fopen(image, "rb");
if (fin == NULL) {
fprintf(stderr, "Cannot open input file: %s\n", image);
exit(2);
}
fclose(fin);
if (!api.ProcessPages(image, NULL, 0, renderer)) {
fprintf(stderr, "Error during processing.\n");
exit(1);
}
}
FILE* fout = stdout;
if (strcmp(output, "-") && strcmp(output, "stdout")) {
STRING outfile = STRING(output)
+ STRING(".")
+ STRING(renderer->file_extension());
fout = fopen(outfile.string(), "wb");
if (fout == NULL) {
fprintf(stderr, "Cannot create output file %s\n", outfile.string());
exit(1);
}
}
const char* data;
inT32 data_len;
if (renderer->GetOutput(&data, &data_len)) {
fwrite(data, 1, data_len, fout);
if (fout != stdout)
fclose(fout);
else
clearerr(fout);
}
PERF_COUNT_END
return 0; // Normal exit
}
开发者ID:BruceWoR,项目名称:tess-two-master,代码行数:101,代码来源:tesseractmain.cpp
示例7: file_stdio_fclearerr
static void file_stdio_fclearerr(ALLEGRO_FILE *f)
{
USERDATA *userdata = get_userdata(f);
clearerr(userdata->fp);
}
开发者ID:MarkOates,项目名称:allegro5,代码行数:6,代码来源:file_stdio.c
示例8: main
int
main(int argc, char **argv)
{
int c;
int updates = 0;
char *usage = "Usage: %s [-v] [-f prom-device]"
" [variable[=value] ...]";
eplist_t *elist;
benv_des_t *bd;
char *file = NULL;
setpname(argv[0]);
while ((c = getopt(argc, argv, "f:Itv")) != -1)
switch (c) {
case 'v':
verbose++;
break;
case 'f':
file = optarg;
break;
case 't':
test++;
break;
default:
exit(_error(NO_PERROR, usage, argv[0]));
}
(void) uname(&uts_buf);
bd = new_bd();
init_benv(bd, file);
map_benv(bd);
if (bd->len) {
parse_benv(bd);
unmap_benv(bd);
}
elist = bd->elist;
if (optind >= argc) {
print_vars(elist);
return (0);
} else
while (optind < argc) {
/*
* If "-" specified, read variables from stdin;
* otherwise, process each argument as a variable
* print or set request.
*/
if (strcmp(argv[optind], "-") == 0) {
char *line;
while ((line = get_line()) != NULL)
updates += proc_var(line, elist);
clearerr(stdin);
} else
updates += proc_var(argv[optind], elist);
optind++;
}
/*
* don't write benv if we are processing delayed writes since
* it is likely that the delayed writes changes bootenv.rc anyway...
*/
if (updates)
write_benv(bd);
close_kbenv();
return (0);
}
开发者ID:alek-p,项目名称:openzfs,代码行数:72,代码来源:benv.c
示例9: batch_job_condor_wait
static batch_job_id_t batch_job_condor_wait (struct batch_queue * q, struct batch_job_info * info_out, time_t stoptime)
{
static FILE *logfile = 0;
if(!logfile) {
logfile = fopen(q->logfile, "r");
if(!logfile) {
debug(D_NOTICE, "couldn't open logfile %s: %s\n", q->logfile, strerror(errno));
return -1;
}
}
while(1) {
/*
Note: clearerr is necessary to clear any cached end-of-file condition,
otherwise some implementations of fgets (i.e. darwin) will read to end
of file once and then never look for any more data.
*/
clearerr(logfile);
char line[BATCH_JOB_LINE_MAX];
while(fgets(line, sizeof(line), logfile)) {
int type, proc, subproc;
batch_job_id_t jobid;
time_t current;
struct tm tm;
struct batch_job_info *info;
int logcode, exitcode;
if(sscanf(line, "%d (%" SCNbjid ".%d.%d) %d/%d %d:%d:%d", &type, &jobid, &proc, &subproc, &tm.tm_mon, &tm.tm_mday, &tm.tm_hour, &tm.tm_min, &tm.tm_sec) == 9) {
tm.tm_year = 2008 - 1900;
tm.tm_isdst = 0;
current = mktime(&tm);
info = itable_lookup(q->job_table, jobid);
if(!info) {
info = malloc(sizeof(*info));
memset(info, 0, sizeof(*info));
itable_insert(q->job_table, jobid, info);
}
debug(D_BATCH, "line: %s", line);
if(type == 0) {
info->submitted = current;
} else if(type == 1) {
info->started = current;
debug(D_BATCH, "job %" PRIbjid " running now", jobid);
} else if(type == 9) {
itable_remove(q->job_table, jobid);
info->finished = current;
info->exited_normally = 0;
info->exit_signal = SIGKILL;
debug(D_BATCH, "job %" PRIbjid " was removed", jobid);
memcpy(info_out, info, sizeof(*info));
free(info);
return jobid;
} else if(type == 5) {
itable_remove(q->job_table, jobid);
info->finished = current;
fgets(line, sizeof(line), logfile);
if(sscanf(line, " (%d) Normal termination (return value %d)", &logcode, &exitcode) == 2) {
debug(D_BATCH, "job %" PRIbjid " completed normally with status %d.", jobid, exitcode);
info->exited_normally = 1;
info->exit_code = exitcode;
} else if(sscanf(line, " (%d) Abnormal termination (signal %d)", &logcode, &exitcode) == 2) {
debug(D_BATCH, "job %" PRIbjid " completed abnormally with signal %d.", jobid, exitcode);
info->exited_normally = 0;
info->exit_signal = exitcode;
} else {
debug(D_BATCH, "job %" PRIbjid " completed with unknown status.", jobid);
info->exited_normally = 0;
info->exit_signal = 0;
}
memcpy(info_out, info, sizeof(*info));
free(info);
return jobid;
}
}
}
if(itable_size(q->job_table) <= 0)
return 0;
if(stoptime != 0 && time(0) >= stoptime)
return -1;
if(process_pending())
return -1;
//.........这里部分代码省略.........
开发者ID:xavierdingdev,项目名称:cctools,代码行数:101,代码来源:batch_job_condor.c
示例10: read_file
//.........这里部分代码省略.........
}
ctx->current = (zip_uint64_t)new_current;
if (need_seek) {
if (_zip_fseek_u(ctx->f, ctx->current, SEEK_SET, &ctx->error) < 0) {
return -1;
}
}
return 0;
}
case ZIP_SOURCE_SEEK_WRITE: {
zip_source_args_seek_t *args;
args = ZIP_SOURCE_GET_ARGS(zip_source_args_seek_t, data, len, &ctx->error);
if (args == NULL) {
return -1;
}
if (_zip_fseek(ctx->fout, args->offset, args->whence, &ctx->error) < 0) {
return -1;
}
return 0;
}
case ZIP_SOURCE_STAT: {
if (len < sizeof(ctx->st))
return -1;
if (ctx->st.valid != 0)
memcpy(data, &ctx->st, sizeof(ctx->st));
else {
zip_stat_t *st;
struct stat fst;
int err;
if (ctx->f)
err = fstat(fileno(ctx->f), &fst);
else
err = stat(ctx->fname, &fst);
if (err != 0) {
zip_error_set(&ctx->error, ZIP_ER_READ, errno);
return -1;
}
st = (zip_stat_t *)data;
zip_stat_init(st);
st->mtime = fst.st_mtime;
st->valid |= ZIP_STAT_MTIME;
if (ctx->end != 0) {
st->size = ctx->end - ctx->start;
st->valid |= ZIP_STAT_SIZE;
}
else if ((fst.st_mode&S_IFMT) == S_IFREG) {
st->size = (zip_uint64_t)fst.st_size;
st->valid |= ZIP_STAT_SIZE;
}
}
return sizeof(ctx->st);
}
case ZIP_SOURCE_SUPPORTS:
return ctx->supports;
case ZIP_SOURCE_TELL:
return (zip_int64_t)ctx->current;
case ZIP_SOURCE_TELL_WRITE:
{
off_t ret = ftello(ctx->fout);
if (ret < 0) {
zip_error_set(&ctx->error, ZIP_ER_TELL, errno);
return -1;
}
return ret;
}
case ZIP_SOURCE_WRITE:
{
size_t ret;
clearerr(ctx->fout);
ret = fwrite(data, 1, len, ctx->fout);
if (ret != len || ferror(ctx->fout)) {
zip_error_set(&ctx->error, ZIP_ER_WRITE, errno);
return -1;
}
return (zip_int64_t)ret;
}
default:
zip_error_set(&ctx->error, ZIP_ER_OPNOTSUPP, 0);
return -1;
}
}
开发者ID:3F,项目名称:php-src,代码行数:101,代码来源:zip_source_filep.c
示例11: fetch
//.........这里部分代码省略.........
if (of == NULL)
of = fopen(path, "w");
if (of == NULL) {
warn("%s: open()", path);
goto failure;
}
}
count = url->offset;
/* start the counter */
stat_start(&xs, path, us.size, count);
sigalrm = siginfo = sigint = 0;
/* suck in the data */
setvbuf(f, NULL, _IOFBF, B_size);
signal(SIGINFO, sig_handler);
while (!sigint) {
if (us.size != -1 && us.size - count < B_size &&
us.size - count >= 0)
size = us.size - count;
else
size = B_size;
if (siginfo) {
stat_end(&xs);
siginfo = 0;
}
if (size == 0)
break;
if ((readcnt = fread(buf, 1, size, f)) < size) {
if (ferror(f) && errno == EINTR && !sigint)
clearerr(f);
else if (readcnt == 0)
break;
}
stat_update(&xs, count += readcnt);
for (ptr = buf; readcnt > 0; ptr += wr, readcnt -= wr)
if ((wr = fwrite(ptr, 1, readcnt, of)) < readcnt) {
if (ferror(of) && errno == EINTR && !sigint)
clearerr(of);
else
break;
}
if (readcnt != 0)
break;
}
if (!sigalrm)
sigalrm = ferror(f) && errno == ETIMEDOUT;
signal(SIGINFO, SIG_DFL);
stat_end(&xs);
/*
* If the transfer timed out or was interrupted, we still want to
* set the mtime in case the file is not removed (-r or -R) and
* the user later restarts the transfer.
*/
signal:
/* set mtime of local file */
if (!n_flag && us.mtime && !o_stdout && of != NULL &&
(stat(path, &sb) != -1) && sb.st_mode & S_IFREG) {
struct timeval tv[2];
开发者ID:FreeBSDFoundation,项目名称:freebsd,代码行数:66,代码来源:fetch.c
示例12: libcfile_stream_write_buffer
/* Writes a buffer to the file stream
* This function uses the POSIX fwrite function or equivalent
* Returns the number of bytes written if successful, or -1 on error
*/
ssize_t libcfile_stream_write_buffer(
libcfile_stream_t *stream,
const uint8_t *buffer,
size_t size,
libcerror_error_t **error )
{
libcfile_internal_stream_t *internal_stream = NULL;
static char *function = "libcfile_stream_write_buffer";
ssize_t write_count = 0;
if( stream == NULL )
{
libcerror_error_set(
error,
LIBCERROR_ERROR_DOMAIN_ARGUMENTS,
LIBCERROR_ARGUMENT_ERROR_INVALID_VALUE,
"%s: invalid stream.",
function );
return( -1 );
}
internal_stream = (libcfile_internal_stream_t *) stream;
if( internal_stream->stream == NULL )
{
libcerror_error_set(
error,
LIBCERROR_ERROR_DOMAIN_RUNTIME,
LIBCERROR_RUNTIME_ERROR_VALUE_MISSING,
"%s: invalid stream - missing stream.",
function );
return( -1 );
}
if( buffer == NULL )
{
libcerror_error_set(
error,
LIBCERROR_ERROR_DOMAIN_ARGUMENTS,
LIBCERROR_ARGUMENT_ERROR_INVALID_VALUE,
"%s: invalid buffer.",
function );
return( -1 );
}
if( size > (size_t) SSIZE_MAX )
{
libcerror_error_set(
error,
LIBCERROR_ERROR_DOMAIN_ARGUMENTS,
LIBCERROR_ARGUMENT_ERROR_VALUE_EXCEEDS_MAXIMUM,
"%s: invalid size value exceeds maximum.",
function );
return( -1 );
}
write_count = fwrite(
(void *) buffer,
1,
size,
internal_stream->stream );
if( write_count == 0 )
{
if( feof(
internal_stream->stream ) == 0 )
{
libcerror_system_set_error(
error,
LIBCERROR_ERROR_DOMAIN_IO,
LIBCERROR_IO_ERROR_WRITE_FAILED,
errno,
"%s: unable to write to stream.",
function );
clearerr(
internal_stream->stream );
return( -1 );
}
clearerr(
internal_stream->stream );
}
return( write_count );
}
开发者ID:fengye110,项目名称:libewf_64bit,代码行数:89,代码来源:libcfile_stream.c
示例13: globus_l_job_manager_parse_events
static
int
globus_l_job_manager_parse_events(
globus_l_job_manager_logfile_state_t * state)
{
int rc;
int protocol_msg_type;
time_t stamp;
char jobid[129];
char nl[2];
int job_state;
int exit_code;
struct tm gmstamp, *gmstampp;
fpos_t pos;
SEG_JOB_MANAGER_DEBUG(SEG_JOB_MANAGER_DEBUG_INFO,
("globus_l_job_manager_parse_events() called\n"));
fgetpos(state->fp, &pos);
while ((rc = fscanf(state->fp, "%d;%ld;%128[^;];%d;%d%1[\n]",
&protocol_msg_type,
&stamp,
jobid,
&job_state,
&exit_code,
nl)) > 4)
{
if (rc == 4 && fscanf(state->fp, "%1[\n]", nl) != 1)
{
goto bad_line;
}
if (protocol_msg_type != 1)
{
goto bad_line;
}
gmstampp = globus_libc_gmtime_r(&stamp, &gmstamp);
if (globus_l_time_is_newer(&state->start_timestamp, &gmstamp))
{
/* Ignore events that occur before our start timestamp */
goto bad_line;
}
switch(job_state)
{
case GLOBUS_GRAM_PROTOCOL_JOB_STATE_PENDING:
globus_scheduler_event_pending(stamp, jobid);
break;
case GLOBUS_GRAM_PROTOCOL_JOB_STATE_ACTIVE:
globus_scheduler_event_active(stamp, jobid);
break;
case GLOBUS_GRAM_PROTOCOL_JOB_STATE_DONE:
globus_scheduler_event_done(stamp, jobid, exit_code);
break;
case GLOBUS_GRAM_PROTOCOL_JOB_STATE_FAILED:
globus_scheduler_event_failed(stamp, jobid, exit_code);
break;
default:
goto bad_line;
}
bad_line:
fgetpos(state->fp, &pos);
}
if (feof(state->fp))
{
clearerr(state->fp);
rc = SEG_JOB_MANAGER_ERROR_LOG_EOF;
}
else
{
rc = 0;
}
fsetpos(state->fp, &pos);
SEG_JOB_MANAGER_DEBUG(SEG_JOB_MANAGER_DEBUG_INFO,
("globus_l_job_manager_parse_events() exits\n"));
return rc;
}
开发者ID:eunsungc,项目名称:globus_toolkit-6.0.1430141288-RAMSES,代码行数:85,代码来源:seg_job_manager_module.c
示例14: ExecQueryUsingCursor
//.........这里部分代码省略.........
}
/*
* In \gset mode, we force the fetch count to be 2, so that we will throw
* the appropriate error if the query returns more than one row.
*/
if (pset.gset_prefix)
fetch_count = 2;
else
fetch_count = pset.fetch_count;
snprintf(fetch_cmd, sizeof(fetch_cmd),
"FETCH FORWARD %d FROM _psql_cursor",
fetch_count);
/* prepare to write output to \g argument, if any */
if (pset.gfname)
{
if (!openQueryOutputFile(pset.gfname, &fout, &is_pipe))
{
OK = false;
goto cleanup;
}
if (is_pipe)
disable_sigpipe_trap();
}
else
{
fout = pset.queryFout;
is_pipe = false; /* doesn't matter */
}
/* clear any pre-existing error indication on the output stream */
clearerr(fout);
for (;;)
{
if (pset.timing)
INSTR_TIME_SET_CURRENT(before);
/* get fetch_count tuples at a time */
results = PQexec(pset.db, fetch_cmd);
if (pset.timing)
{
INSTR_TIME_SET_CURRENT(after);
INSTR_TIME_SUBTRACT(after, before);
*elapsed_msec += INSTR_TIME_GET_MILLISEC(after);
}
if (PQresultStatus(results) != PGRES_TUPLES_OK)
{
/* shut down pager before printing error message */
if (is_pager)
{
ClosePager(fout);
is_pager = false;
}
OK = AcceptResult(results);
Assert(!OK);
PQclear(results);
break;
}
if (pset.gset_prefix)
开发者ID:Princever,项目名称:postgres,代码行数:67,代码来源:common.c
示例15: expand_main
int expand_main(int argc UNUSED_PARAM, char **argv)
{
/* Default 8 spaces for 1 tab */
const char *opt_t = "8";
FILE *file;
unsigned tab_size;
unsigned opt;
int exit_status = EXIT_SUCCESS;
#if ENABLE_FEATURE_EXPAND_LONG_OPTIONS
static const char expand_longopts[] ALIGN1 =
/* name, has_arg, val */
"initial\0" No_argument "i"
"tabs\0" Required_argument "t"
;
#endif
#if ENABLE_FEATURE_UNEXPAND_LONG_OPTIONS
static const char unexpand_longopts[] ALIGN1 =
/* name, has_arg, val */
"first-only\0" No_argument "i"
"tabs\0" Required_argument "t"
"all\0" No_argument "a"
;
#endif
init_unicode();
if (ENABLE_EXPAND && (!ENABLE_UNEXPAND || applet_name[0] == 'e')) {
IF_FEATURE_EXPAND_LONG_OPTIONS(applet_long_options = expand_longopts);
opt = getopt32(argv, "it:", &opt_t);
} else {
IF_FEATURE_UNEXPAND_LONG_OPTIONS(applet_long_options = unexpand_longopts);
/* -t NUM sets also -a */
opt_complementary = "ta";
opt = getopt32(argv, "ft:a", &opt_t);
/* -f --first-only is the default */
if (!(opt & OPT_ALL)) opt |= OPT_INITIAL;
}
tab_size = xatou_range(opt_t, 1, UINT_MAX);
argv += optind;
if (!*argv) {
*--argv = (char*)bb_msg_standard_input;
}
do {
file = fopen_or_warn_stdin(*argv);
if (!file) {
exit_status = EXIT_FAILURE;
continue;
}
if (ENABLE_EXPAND && (!ENABLE_UNEXPAND || applet_name[0] == 'e'))
IF_EXPAND(expand(file, tab_size, opt));
else
IF_UNEXPAND(unexpand(file, tab_size, opt));
/* Check and close the file */
if (fclose_if_not_stdin(file)) {
bb_simple_perror_msg(*argv);
exit_status = EXIT_FAILURE;
}
/* If stdin also clear EOF */
if (file == stdin)
clearerr(file);
} while (*++argv);
/* Now close stdin also */
/* (if we didn't read from it, it's a no-op) */
if (fclose(stdin))
bb_perror_msg_and_die(bb_msg_standard_input);
fflush_stdout_and_exit(exit_status);
}
开发者ID:Ayyayay,项目名称:busybox,代码行数:73,代码来源:expand.c
示例16: readtty
static char *
readtty(const char *pr, char *src)
{
char canonb[LINESIZE];
char *cp, *cp2;
int c;
#ifdef TIOCSTI
char ch;
#endif
(void)fputs(pr, stdout);
(void)fflush(stdout);
if (src != NULL && strlen(src) > sizeof(canonb) - 2) {
(void)printf("too long to edit\n");
return src;
}
#ifndef TIOCSTI
if (src != NULL)
cp = copy(src, canonb);
else
cp = copy(__UNCONST(""), canonb);
c = *cp;
(void)fputs(canonb, stdout);
(void)fflush(stdout);
#else
cp = src == NULL ? __UNCONST("") : src;
while ((c = *cp++) != '\0') {
if ((c_erase != _POSIX_VDISABLE && c == c_erase) ||
(c_kill != _POSIX_VDISABLE && c == c_kill)) {
ch = '\\';
(void)ioctl(0, TIOCSTI, &ch);
}
ch = c;
(void)ioctl(0, TIOCSTI, &ch);
}
cp = canonb;
*cp = '\0';
#endif
clearerr(stdin);
cp2 = cp;
while (cp2 < canonb + sizeof(canonb) - 1) {
c = getc(stdin);
sig_check();
if (c == EOF) {
if (feof(stdin))
(void)putc('\n', stdout);
break;
}
if (c == '\n')
break;
*cp2++ = c;
}
*cp2 = '\0';
if (c == EOF && ferror(stdin)) {
cp = strlen(canonb) > 0 ? canonb : NULL;
clearerr(stdin);
return readtty(pr, cp);
}
#ifndef TIOCSTI
if (cp == NULL || *cp == '\0')
return src;
if (ttyset == 0)
return strlen(canonb) > 0 ? savestr(canonb) : NULL;
/*
* Do erase and kill.
*/
cp2 = cp;
while (*cp != '\0') {
c = *cp++;
if (c_erase != _POSIX_VDISABLE && c == c_erase) {
if (cp2 == canonb)
continue;
if (cp2[-1] == '\\') {
cp2[-1] = c;
continue;
}
cp2--;
continue;
}
if (c_kill != _POSIX_VDISABLE && c == c_kill) {
if (cp2 == canonb)
continue;
if (cp2[-1] == '\\') {
cp2[-1] = c;
continue;
}
cp2 = canonb;
continue;
}
*cp2++ = c;
}
*cp2 = '\0';
#endif
if (canonb[0] == '\0')
return __UNCONST("");
return savestr(canonb);
}
开发者ID:ryo,项目名称:netbsd-src,代码行数:99,代码来源:tty.c
示例17: freerdp_parse_args
//.........这里部分代码省略.........
}
else
{
if (ui_callback != NULL)
{
t = ui_callback(settings, argv[index], (index + 1 < argc && argv[index + 1][0] != '-' ?
argv[index + 1] : NULL), ui_user_data);
if (t == 0)
{
printf("invalid option: %s\n", argv[index]);
return FREERDP_ARGS_PARSE_FAILURE;
}
index += t - 1;
}
}
index++;
}
/* --from-stdin will prompt for missing arguments only.
You can prompt for username, password, domain and hostname to avoid disclosing
these settings to ps. */
if (settings->from_stdin)
{
/* username */
if (NULL == settings->username)
{
char input[512];
input[0] = '\0';
printf("username: ");
if (scanf("%511s%*c", input) > 0)
{
settings->username = xstrdup(input);
}
}
/* password */
if (NULL == settings->password)
{
settings->password = xmalloc(512 * sizeof(char));
if (isatty(STDIN_FILENO))
{
freerdp_passphrase_read("password: ", settings->password, 512, settings->from_stdin);
}
else
{
printf("password: ");
if (scanf("%511s%*c", settings->password) <= 0)
{
free(settings->password);
settings->password = NULL;
}
}
}
/* domain */
if (NULL == settings->domain)
{
char input[512];
input[0] = '\0';
printf("domain (control-D to skip): ");
if (scanf("%511s%*c", input) > 0)
{
/* Try to catch the cases where the string is NULL-ish right
at the get go */
if (input[0] != '\0' && !(input[0] == '.' && input[1] == '\0'))
{
settings->domain = xstrdup(input);
}
}
if (feof(stdin))
{
printf("\n");
clearerr(stdin);
}
}
/* hostname */
if (NULL == settings->hostname)
{
char input[512];
input[0] = '\0';
printf("hostname: ");
if (scanf("%511s%*c", input) > 0)
{
freerdp_parse_hostname(settings, input);
}
}
}
/* Must have a hostname. Do you? */
if (NULL == settings->hostname)
{
printf("missing server name\n");
return FREERDP_ARGS_PARSE_FAILURE;
}
else
{
return index;
}
}
开发者ID:Matrix42AG,项目名称:FreeRDP,代码行数:101,代码来源:args.c
示例18: read_file
static int read_file (const char *path)
{
FILE *fh;
char key_buffer[4096];
char value_buffer[4096];
char *key_ptr;
char *value_ptr;
char *key_fields[256];
char *value_fields[256];
int key_fields_num;
int value_fields_num;
int status;
int i;
fh = fopen (path, "r");
if (fh == NULL)
{
ERROR ("protocols plugin: fopen (%s) failed: %s.",
path, sstrerror (errno, key_buffer, sizeof (key_buffer)));
return (-1);
}
status = -1;
while (42)
{
clearerr (fh);
key_ptr = fgets (key_buffer, sizeof (key_buffer), fh);
if (key_ptr == NULL)
{
if (feof (fh) != 0)
{
status = 0;
break;
}
else if (ferror (fh) != 0)
{
ERROR ("protocols plugin: Reading from %s failed.", path);
break;
}
else
{
ERROR ("protocols plugin: fgets failed for an unknown reason.");
break;
}
} /* if (key_ptr == NULL) */
value_ptr = fgets (value_buffer, sizeof (value_buffer), fh);
if (value_ptr == NULL)
{
ERROR ("protocols plugin: read_file (%s): Could not read values line.",
path);
break;
}
key_ptr = strchr (key_buffer, ':');
if (key_ptr == NULL)
{
ERROR ("protocols plugin: Could not find protocol name in keys line.");
break;
|
请发表评论