本文整理汇总了C++中seterror函数的典型用法代码示例。如果您正苦于以下问题:C++ seterror函数的具体用法?C++ seterror怎么用?C++ seterror使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了seterror函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: syn0
/*
* syn0
* syn1
* syn1 & syntax
*/
static struct command *
syn0(struct wordent *p1, struct wordent *p2, int flags)
{
struct wordent *p;
struct command *t, *t1;
int l;
l = 0;
for (p = p1; p != p2; p = p->next)
switch (p->word[0]) {
case '(':
l++;
continue;
case ')':
l--;
if (l < 0)
seterror(ERR_TOOMANYRP);
continue;
case '|':
if (p->word[1] == '|')
continue;
/* fall into ... */
case '>':
if (p->next != p2 && eq(p->next->word, STRand))
p = p->next;
continue;
case '&':
if (l != 0)
break;
if (p->word[1] == '&')
continue;
t1 = syn1(p1, p, flags);
if (t1->t_dtyp == NODE_LIST ||
t1->t_dtyp == NODE_AND ||
t1->t_dtyp == NODE_OR) {
t = (struct command *) xcalloc(1, sizeof(*t));
t->t_dtyp = NODE_PAREN;
t->t_dflg = F_AMPERSAND | F_NOINTERRUPT;
t->t_dspr = t1;
t1 = t;
}
else
t1->t_dflg |= F_AMPERSAND | F_NOINTERRUPT;
t = (struct command *) xcalloc(1, sizeof(*t));
t->t_dtyp = NODE_LIST;
t->t_dflg = 0;
t->t_dcar = t1;
t->t_dcdr = syntax(p, p2, flags);
return (t);
}
if (l == 0)
return (syn1(p1, p2, flags));
seterror(ERR_TOOMANYLP);
return (0);
}
示例2: fopen
// 输入文件
bool myflexer::inputfile(const char * filename)
{
m_filename = filename;
FILE * file = fopen(filename, "r");
if (!file)
{
seterror(m_fk, efk_open_file_fail, "open %s fail", filename);
return false;
}
int8_t readbuff[100];
size_t len = 0;
while (!feof(file))
{
len = fread((void*)readbuff, 1, sizeof(readbuff)-1, file);
readbuff[len] = 0;
m_content += (char *)readbuff;
}
fclose(file);
if (m_content.empty())
{
seterror(m_fk, efk_open_file_empty, "open %s empty", filename);
return false;
}
m_num = m_content.size();
m_pos = 0;
return true;
}
示例3: initread
int initread(int fdread, int fdwrite, int signo, char *buf, int bufsize) {
int error;
sigset_t oldset, fullset;
if ((sigfillset(&fullset) == -1) ||
(sigprocmask(SIG_SETMASK, &fullset, &oldset) == -1)) {
seterror(errno);
return -1;
}
aiocb.aio_fildes = fdread; /* set up structure */
aiocb.aio_offset = 0;
aiocb.aio_buf = (void *)buf;
aiocb.aio_nbytes = bufsize;
aiocb.aio_sigevent.sigev_notify = SIGEV_SIGNAL;
aiocb.aio_sigevent.sigev_signo = signo;
aiocb.aio_sigevent.sigev_value.sival_ptr = &aiocb;
fdout = fdwrite;
doneflag = 0;
globalerror = 0;
totalbytes = 0;
error = readstart(); /* start first read */
if (sigprocmask(SIG_SETMASK, &oldset, NULL) == -1) {
seterror(errno);
return -1;
}
return error;
}
示例4: aiohandler
/* ARGSUSED */
static void aiohandler(int signo, siginfo_t *info, void *context) {
int myerrno, mystatus, serrno;
serrno = errno;
myerrno = aio_error(&aiocb_read);
if (myerrno == EINPROGRESS) {
errno = serrno;
return;
}
if (myerrno) {
seterror(myerrno);
errno = serrno;
return;
}
mystatus = aio_return(&aiocb_read);
totalbytes += mystatus;
aiocb_read.aio_offset += mystatus;
aiocb_write.aio_nbytes = mystatus;
if (mystatus == 0)
doneflag = 1;
else if (aio_write(&aiocb_write) == -1)
seterror(errno);
else if (readstart() == -1)
seterror(errno);
errno = serrno;
}
示例5: gsopen
int
gsopen(Modem *m)
{
int n;
char bytes[Gshdrsize];
/*
* Is this gs output
*/
n = Bread(m->bp, bytes, Gshdrsize);
if(n != Gshdrsize)
return seterror(m, Esys);
if(bytes[0]!='\0' || strcmp(bytes+1, "PC Research, Inc")!=0){
Bseek(m->bp, 0, 0);
return seterror(m, Esys);
}
m->valid |= Vtype;
if(bytes[0x1d])
m->vr = 1;
else
m->vr = 0;
m->wd = 0;
m->ln = 2;
m->df = 0;
return Eok;
}
示例6: while
/* skip entries until found search or dict end. skipped does not include the found key */
bool TorrentBase::try_next_dict_entry(BufferString search, BufferString prev, bool &error, BufferString *skipped) {
size_t start = m_buffer.pos();
error = true;
if (m_buffer.pos() >= m_buffer.m_len) return seterror("expected dict, found eof");
BufferString cur;
while (m_buffer.m_data[m_buffer.pos()] != 'e') {
size_t curpos = m_buffer.pos();;
if (!read_utf8(cur)) return errorcontext("parsing dict key failed");
if (cur <= prev) return seterror("(previous) dict entries in wrong order");
if (cur == search) {
error = false;
if (0 != skipped) *skipped = BufferString(m_buffer.data() + start, curpos - start);
return true;
}
if (cur > search) {
m_buffer.m_pos = curpos;
error = false;
if (0 != skipped) *skipped = BufferString(m_buffer.data() + start, m_buffer.pos() - start);
return false;
}
prev = cur;
if (m_buffer.pos() >= m_buffer.m_len) return seterror("expected dict value, found eof");
if (!skip_value()) return errorcontext("parsing dict value failed");
if (m_buffer.pos() >= m_buffer.m_len) return seterror("expected dict entry or 'e', found eof");
}
/* dict end found, don't skip the 'e' */
error = false;
if (0 != skipped) *skipped = BufferString(m_buffer.data() + start, m_buffer.pos() - start);
return false;
}
示例7: fixDolMod
static void
fixDolMod(void)
{
int c;
c = DgetC(0);
if (c == ':') {
do {
c = DgetC(0), dolmcnt = 1, dolwcnt = 1;
if (c == 'g' || c == 'a') {
if (c == 'g')
dolmcnt = 10000;
else
dolwcnt = 10000;
c = DgetC(0);
}
if ((c == 'g' && dolmcnt != 10000) ||
(c == 'a' && dolwcnt != 10000)) {
if (c == 'g')
dolmcnt = 10000;
else
dolwcnt = 10000;
c = DgetC(0);
}
if (c == 's') { /* [eichin:19910926.0755EST] */
int delimcnt = 2;
int delim = DgetC(0);
dolmod[dolnmod++] = c;
dolmod[dolnmod++] = delim;
if (!delim || letter(delim)
|| Isdigit(delim) || any(" \t\n", delim)) {
seterror(ERR_BADSUBST);
break;
}
while ((c = DgetC(0)) != (-1)) {
dolmod[dolnmod++] = c;
if(c == delim) delimcnt--;
if(!delimcnt) break;
}
if(delimcnt) {
seterror(ERR_BADSUBST);
break;
}
continue;
}
if (!any("htrqxes", c))
stderror(ERR_BADMOD, c);
dolmod[dolnmod++] = c;
if (c == 'q')
dolmcnt = 10000;
}
while ((c = DgetC(0)) == ':');
unDredc(c);
}
else
unDredc(c);
}
示例8: fixDolMod
static void
fixDolMod(void)
{
eChar c;
c = DgetC(0);
if (c == ':') {
do {
c = DgetC(0), dolmcnt = 1, dol_flag_a = 0;
if (c == 'g' || c == 'a') {
if (c == 'g')
dolmcnt = INT_MAX;
else
dol_flag_a = 1;
c = DgetC(0);
}
if ((c == 'g' && dolmcnt != INT_MAX) ||
(c == 'a' && dol_flag_a == 0)) {
if (c == 'g')
dolmcnt = INT_MAX;
else
dol_flag_a = 1;
c = DgetC(0);
}
if (c == 's') { /* [eichin:19910926.0755EST] */
int delimcnt = 2;
eChar delim = DgetC(0);
Strbuf_append1(&dolmod, (Char) c);
Strbuf_append1(&dolmod, (Char) delim);
if (delim == DEOF || !delim || letter(delim)
|| Isdigit(delim) || any(" \t\n", delim)) {
seterror(ERR_BADSUBST);
break;
}
while ((c = DgetC(0)) != DEOF) {
Strbuf_append1(&dolmod, (Char) c);
if(c == delim) delimcnt--;
if(!delimcnt) break;
}
if(delimcnt) {
seterror(ERR_BADSUBST);
break;
}
continue;
}
if (!any("luhtrqxes", c))
stderror(ERR_BADMOD, (int)c);
Strbuf_append1(&dolmod, (Char) c);
if (c == 'q')
dolmcnt = INT_MAX;
}
while ((c = DgetC(0)) == ':');
unDredc(c);
}
else
unDredc(c);
}
示例9: character
/* Receives bytes on a socket up to the first new-line character (\n)
or until the number of bytes received is equal to n-1, whichever
comes first. Stores the result in string and adds a null
character (\0) to the end of the string. If n is equal to 1, the
string is empty. Returns a pointer to the string buffer if successful.
A NULL return value indicates an error or that the connection is
closed.*/
char* XIOsocket::gets(char* buffer, unsigned int size)
{
unsigned int done = 0;
char* p = buffer;
DEBUGLOG(("XIOsocket(%p{%d})::gets(%p, %d)\n", this, s_handle, buffer, size));
while (done < size - 1)
{
#ifdef TCPV40HDRS
// Work around for missing SO_RCVTIMEO in 16 bit IP stack.
struct timeval timeout = {0};
timeout.tv_sec = xio_socket_timeout();
if (timeout.tv_sec)
{ fd_set waitlist;
FD_ZERO(&waitlist);
FD_SET (s_handle, &waitlist);
switch (select(s_handle+1, &waitlist, NULL, NULL, &timeout))
{ case 0: // Timeout
seterror(SOCETIMEDOUT);
return NULL;
case -1: // Error
seterror();
return NULL;
}
}
#endif
int rc = recv(s_handle, p, 1, 0);
if( rc == 1 )
{ if (*p == '\r')
continue;
else if(*p == '\n')
break;
else
{ ++p;
++done;
}
} else
{ DEBUGLOG(("XIOsocket::gets: error %d\n", sock_errno()));
if (!done)
{ if (rc == 0)
eof = true;
else
seterror();
return NULL;
} else
break;
}
}
*p = 0;
DEBUGLOG(("XIOsocket::gets: %s\n", buffer));
return buffer;
}
示例10: seterror
bool TorrentBase::skip_value() {
char c;
if (m_buffer.pos() >= m_buffer.m_len) return seterror("expected value, found eof");
c = m_buffer.m_data[m_buffer.pos()];
if (c >= '0' && c <= '9') return skip_string();
if (c == 'i') return skip_number();
if (c == 'l') return skip_list();
if (c == 'd') return skip_dict();
return seterror("expected value");
}
示例11: length
bool vectrex_cart_slot_device::call_load()
{
if (m_cart)
{
UINT32 size = (software_entry() == nullptr) ? length() : get_software_region_length("rom");
UINT8 *ROM;
if (size > 0x10000)
{
seterror(IMAGE_ERROR_UNSPECIFIED, "Unsupported cartridge size");
return IMAGE_INIT_FAIL;
}
m_cart->rom_alloc((size < 0x1000) ? 0x1000 : size, tag());
ROM = m_cart->get_rom_base();
if (software_entry() == nullptr)
fread(ROM, size);
else
memcpy(ROM, get_software_region("rom"), size);
// Verify the file is accepted by the Vectrex bios
if (memcmp(ROM, "g GCE", 5))
{
seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid image");
return IMAGE_INIT_FAIL;
}
// determine type
m_type = VECTREX_STD;
if (!memcmp(ROM + 0x06, "SRAM", 4))
m_type = VECTREX_SRAM;
if (size > 0x8000)
m_type = VECTREX_64K;
//printf("Type: %s\n", vectrex_get_slot(m_type));
// determine 3D setup (to help video setup at machine_start)
if (!memcmp(ROM + 0x11, "NARROW", 6) && (ROM[0x39] == 0x0c))
m_vec3d = VEC3D_NARROW;
if (!memcmp(ROM + 0x11, "CRAZY COASTER", 13))
m_vec3d = VEC3D_CCOAST;
if (!memcmp(ROM + 0x11, "3D MINE STORM", 13))
m_vec3d = VEC3D_MINEST;
return IMAGE_INIT_PASS;
}
return IMAGE_INIT_PASS;
}
示例12: read_string
bool TorrentBase::read_string(BufferString &str) {
char c;
int64_t pos = m_buffer.pos(), len = m_buffer.m_len;
int64_t slen = 0;
str.m_data = 0; str.m_len = 0;
if (pos >= len) return seterror("expected string length, found eof");
c = m_buffer.m_data[pos++];
if (c < '0' || c > '9') return seterror("expected digit for string length, found eof");
if (pos >= len) return seterror("expected string length, found eof");
if (c == '0' && m_buffer.m_data[pos] != ':') return seterror("expected string length, found leading zero of non zero length (no following ':')");
slen = (c - '0');
for (;;) {
c = m_buffer.m_data[pos++];
if (c == ':') break;
if (c < '0' || c > '9') return seterror("expected digit or colon for string length, found eof");
if (pos >= len) return seterror("expected string length, found eof");
if (slen > std::numeric_limits<int32_t>::max()) return seterror("string length overflow");
slen = 10*slen + (c - '0');
}
if (slen > len || slen > len - pos) return seterror("file not large enough for string length"); /* overflow */
str.m_data = m_buffer.m_data + pos;
str.m_len = slen;
m_buffer.m_pos = pos + slen;
return true;
}
示例13: assembler_get_classmem_call
variant * assembler_get_classmem_call(fake * fk, variant * classvar, variant * callpos)
{
bool err = false;
variant * n = fk->con.newvariant();
void * classptr = 0;
const char * classprefix = 0;
// prefix
V_GET_POINTER(classvar, classptr, classprefix);
if (UNLIKE(err))
{
return 0;
}
const char * funcname = 0;
V_GET_STRING(callpos, funcname);
if (UNLIKE(err))
{
return 0;
}
if (UNLIKE(!classptr))
{
err = true;
seterror(fk, efk_jit_error, fkgetcurfile(fk), fkgetcurline(fk), fkgetcurfunc(fk), "jit class mem call error, the class ptr is null, type %s", classprefix);
return 0;
}
// whole name
char wholename[MAX_FAKE_REG_FUNC_NAME_LEN];
if (UNLIKE(classvar->data.ponter->typesz + callpos->data.str->sz >= MAX_FAKE_REG_FUNC_NAME_LEN))
{
err = true;
seterror(fk, efk_jit_error, fkgetcurfile(fk), fkgetcurline(fk), fkgetcurfunc(fk), "jit class mem call error, the name is too long, func %s %s", classprefix, funcname);
return 0;
}
memcpy(wholename, classprefix, classvar->data.ponter->typesz);
memcpy(wholename + classvar->data.ponter->typesz, funcname, callpos->data.str->sz);
wholename[classvar->data.ponter->typesz + callpos->data.str->sz] = 0;
// call it
V_SET_STRING(n, wholename);
return n;
}
示例14: enqueue
int enqueue(queue_t *q, RTP_header *h, unsigned ft, unsigned char *p, unsigned l, unsigned scale)
{
unsigned j = 0;
double t = h->timestamp / (double)scale;
if (q->mode & MODE_STREAM || .99 * t <= curtime()) {
if (!lock(&q->lock)) return 0;
if (l > sizeof q->packets[q->s].p) goto PS;
while (j++ < q->n && q->packets[q->s].blocked) INC(q);
if (q->packets[q->s].blocked) goto PS;
q->packets[q->s].id = h->id;
q->packets[q->s].tstamp = t;
q->packets[q->s].frame = ft;
q->packets[q->s].size = l;
q->packets[q->s].next = 0;
q->packets[q->s].prev = 0;
q->packets[q->s].blocked = 1;
memcpy(q->packets[q->s].p, p, l);
addpacket(q, &q->packets[q->s]);
INC(q);
unlock(&q->lock);
return 1;
} else {
return 0;
}
PS: seterror(err_PS);
unlock(&q->lock);
return 0;
}
示例15: putmchar
int
putmchar(Modem *m, char *p)
{
if(write(m->fd, p, 1) < 0)
return seterror(m, Esys);
return Eok;
}