Ejemplo n.º 1
0
Archivo: elf.c Proyecto: peadar/hdmp
void
hexdump(FILE *f, int indent, const char *p, int len)
{
    const unsigned char *cp = (const unsigned char *)p;
    char hex[16 * 3 + 1], *hp, ascii[16 + 1], *ap;
    int i, c;

    while (len) {
        hp = hex;
        ap = ascii;
        for (i = 0; len && i < 16; i++) {
            c = *cp++;
            len--;
            hp += sprintf(hp, "%02x ", c);
            *ap++ = c < 127 && c >= 32 ? c : '.';
        }
        *ap = 0;
        fprintf(f, "%s%-48s |%-16s|\n", pad(indent), hex, ascii);
    }
}
Ejemplo n.º 2
0
void printObject(Object* obj, int indent) {
	switch (obj->kind) {
	case OBJ_CONSTANT:
		pad(indent);
		printf("Const %s = ", obj->name);
		printConstantValue(obj->constAttrs->value);
		break;
	case OBJ_TYPE:
		pad(indent);
		printf("Type %s = ", obj->name);
		printType(obj->typeAttrs->actualType);
		break;
	case OBJ_VARIABLE:
		pad(indent);
		printf("Var %s : ", obj->name);
		printType(obj->varAttrs->type);
		break;
	case OBJ_PARAMETER:
		pad(indent);
		if (obj->paramAttrs->kind == PARAM_VALUE)
			printf("Param %s : ", obj->name);
		else
			printf("Param VAR %s : ", obj->name);
		printType(obj->paramAttrs->type);
		break;
	case OBJ_FUNCTION:
		pad(indent);
		printf("Function %s : ", obj->name);
		printType(obj->funcAttrs->returnType);
		printf("\n");
		printScope(obj->funcAttrs->scope, indent + 4);
		break;
	case OBJ_PROCEDURE:
		pad(indent);
		printf("Procedure %s\n", obj->name);
		printScope(obj->procAttrs->scope, indent + 4);
		break;
	case OBJ_PROGRAM:
		pad(indent);
		printf("Program %s\n", obj->name);
		printScope(obj->progAttrs->scope, indent + 4);
		break;
	}
}
Ejemplo n.º 3
0
static void encode_sequence(const char *plain, int len, char *coded) {
   assert(len >= 0 && len <= 5);

   for (int block = 0; block < 8; block++) {
      int octet = get_octet(block);
      int junk = get_offset(block);

      if (octet >= len) {
         pad(&coded[block], 8 - block);
         return;
      }

      char c = shift_right(plain[octet], junk);

      if (junk < 0 && octet < len - 1) {
         c |= shift_right(plain[octet+1], 8 + junk);
      }
      coded[block] = encode_char(c);
   }
}
Ejemplo n.º 4
0
void vcat_pic::display(std::ostream &os, ht_sz row, bool do_pad) const
{
	wd_sz w = 0;
	if(row < top->height())
	{
		// we are in the top subpicture
		top->display(os,row,do_pad);
		w = top->width();
	}
	else if(row < height())
	{
		// we are in the bottom subpicture
		bottom->display(os,row-top->height(),do_pad);
		w = bottom->width();
	}

	if(do_pad)
	{
		pad(os,w,width());
	}
}
Ejemplo n.º 5
0
void putop(int op)
{    
	int     i;
	int seg;

    i = 0;
    while( opl[i].s )
    {
		if( opl[i].ov == (op & 255))
		{
			//seg = op & 0xFF00;
			//if (seg != 0) {
			//	fprintf(output, "%s:", segstr(op));
			//}
			ofs.write(pad(opl[i].s));
			return;
		}
		++i;
    }
    printf("DIAG - illegal opcode.\n");
}
Ejemplo n.º 6
0
void* IATModifier::allocateMemAboveBase(void* baseAddress, size_t size) {
	try	{
		MEMORY_BASIC_INFORMATION mbi;
		for (char* currentAddress = (char*)baseAddress;; currentAddress = (char*)mbi.BaseAddress + mbi.RegionSize) {
			mbi = process_.queryMemory(currentAddress);
			if (mbi.State != MEM_FREE) continue;
			// Walk memory region in allocation granularity steps.
			char* bruteForce = (char*)pad((unsigned int)currentAddress, 0xFFFF);
			while (bruteForce < (char*)mbi.BaseAddress + mbi.RegionSize) {
				try	{
					process_.allocMem(size, bruteForce, MEM_RESERVE | MEM_COMMIT);
					return bruteForce;
				}catch (MemoryAllocationException) {
				}
				bruteForce += 0x10000;
			}
		}
	} catch (const MemoryQueryException&) {
		return NULL;
	}
}
Ejemplo n.º 7
0
		void write_bmp(const BMP<DIB, I, D>& bmp, std::ostream& os)
		{
			typedef typename BMP<DIB, I, D>::color_type C;

			unsigned int l = bmp.dib_h.width * (bmp.dib_h.bpp / 8);
			unsigned int rowsize = ((bmp.dib_h.bpp * bmp.dib_h.width + 31) / 32) * 4;

			std::vector<D> buf(bmp.dib_h.width);
			std::vector<std::uint8_t> pad(rowsize - l);
			I i(bmp.iter);

			os << aux::write_to(bmp.bmp_h);
			os << aux::write_to(bmp.dib_h);

			for(int h = 0 ; h < bmp.dib_h.height ; ++h)
			{
				aux::transform_n(i, bmp.dib_h.width, buf.begin(), [](const C& c) { return static_cast<D>(c); });
				os << aux::write_to(*buf.begin(), l);
				os << aux::write_to(*pad.begin(), pad.size());
			}
		}
Ejemplo n.º 8
0
Archivo: stab.c Proyecto: bhanug/cdb
/* emit_value - emits an initialization for the type given by ty */
static int emit_value(int lc, Type ty, ...) {
	Value v;
	va_list ap;

	va_start(ap, ty);
	if (lc == 0)
		maxalign = 0;
	lc = pad(ty->align, lc);
	switch (ty->op) {
	case INT:      v.i = va_arg(ap, long);          break;
	case UNSIGNED: v.u = va_arg(ap, unsigned long); break;
	case FLOAT:    v.d = va_arg(ap, long double);   break;
	case POINTER:
		defpointer(va_arg(ap, Symbol));
		return lc + ty->size;
	default: assert(0);
	}
	va_end(ap);
	(*IR->defconst)(ty->op, ty->size, v);
	return lc + ty->size;
}
Ejemplo n.º 9
0
void dumpregs(struct TrapData *td)
{	int i;
	XIOdebug("Registers dump:\n"); 
	XIOdebug("Trapdata is at %X\n",(int)td);
	for( i = 0; i< 32; i+=4)
	{	int j;
		for( j = i; j < i+4; j++)
		{	char * f;
			int fwidth;
			f = j< 10? "r%d  = %X":"r%d = %X";
			fwidth = XIOdebug(f,j,td->intregs[j]);
			pad(17,fwidth);
		}
 		XIOdebug("\n");
	}
	XIOdebug("psr = %X\n",td->PSR);
	XIOdebug("db = %X\n",td->DB);
	XIOdebug("dirbase = %X\n",td->DIRBASE);
	XIOdebug("fir = %X\n",td->FIR);
	XIOdebug("fsr = %X\n",td->FSR);
}
Ejemplo n.º 10
0
Archivo: elf.c Proyecto: peadar/hdmp
void
elf32DumpDynamic(FILE *f, const Elf32_Dyn *dyn, int indent)
{
	const char *padding = pad(indent);
	static const char *tagNames[] = {
	    "DT_NULL",
	    "DT_NEEDED",
	    "DT_PLTRELSZ",
	    "DT_PLTGOT",
	    "DT_HASH",
	    "DT_STRTAB",
	    "DT_SYMTAB",
	    "DT_RELA",
	    "DT_RELASZ",
	    "DT_RELAENT",
	    "DT_STRSZ",
	    "DT_SYMENT",
	    "DT_INIT",
	    "DT_FINI",
	    "DT_SONAME",
	    "DT_RPATH",
	    "DT_SYMBOLIC",
	    "DT_REL",
	    "DT_RELSZ",
	    "DT_RELENT",
	    "DT_PLTREL",
	    "DT_DEBUG",
	    "DT_TEXTREL",
	    "DT_JMPREL",
	    "DT_BIND_NOW"
	};
#ifndef DT_COUNT
#define DT_COUNT (sizeof tagNames / sizeof tagNames[0])
#endif
	fprintf(f, "%stag: %d (%s)\n", padding, dyn->d_tag,
	    dyn->d_tag >= 0 && dyn->d_tag <= DT_COUNT ?
	    tagNames[dyn->d_tag] : "(unknown)");
	fprintf(f, "%sword/addr: %d (%x)\n",
	    padding, dyn->d_un.d_val, dyn->d_un.d_val);
}
Ejemplo n.º 11
0
void putop(Instruction *insn,int op, int len)
{    
	int     i;
	char buf[100];

    i = 0;
//    while( opl[i].mnem )
//    {
//		if( opl[i].opcode == (op & 0x1FF))
//		{
			//seg = op & 0xFF00;
			//if (seg != 0) {
			//	fprintf(output, "%s:", segstr(op));
			//}
			if (len) {
				if (len <= 16) {
					switch(len) {
					case 1:	sprintf_s(buf, sizeof(buf), "%s.b", insn->mnem); break;
					case 2:	sprintf_s(buf, sizeof(buf), "%s.c", insn->mnem); break;
					case 4:	sprintf_s(buf, sizeof(buf), "%s.h", insn->mnem); break;
					case 8:	sprintf_s(buf, sizeof(buf), "%s", insn->mnem); break;
					}
				}
				else {
					if (len != 'w' && len!='W')
						sprintf_s(buf, sizeof(buf), "%s.%c", insn->mnem, len);
					else
						sprintf_s(buf, sizeof(buf), "%s", insn->mnem);
				}
			}
			else
				sprintf_s(buf, sizeof(buf), "%s", insn->mnem);
			ofs.write(pad(buf));
			return;
//		}
//		++i;
//    }
    printf("DIAG - illegal opcode (%d).\n", op);
}
Ejemplo n.º 12
0
    void printEntries(std::ostream &o, const std::vector<Entry *> &entries, const std::string &indent, double parent_time) {
      if (parent_time <= 0.0) {
        parent_time = 0.0;
        for (size_t i = 0; i < entries.size(); ++i) {
          parent_time += entries[i]->time;
        }
      }
      double t_tot = 0.0;
      for (size_t i = 0; i < entries.size(); ++i) {
        const Entry *entry = entries[i];

        std::ostringstream r;
        r << indent;
        std::string str = names[entry->id];
        if (str.empty()) {
          r << "(" << entry->id << ")";
        } else {
          r << str;
        }
        r << " ";
        std::string pad(r.str().size(), ' ');
        r << " - exectime: " << entry->time << "s (" << (entry->time * 100.0 / parent_time) << "%)" << std::endl;
        if (entry->allocTotal || entry->memoryDiff) {
          r << pad << " - alloc: " << formatMemory(entry->allocTotal) << " delta: " << formatMemory(entry->memoryDiff) << std::endl;
          r << pad << " - alloc blks:";
          for (int i = 0; i < 32; i++) { if (entry->delta_blk_cnt_total[i]) r << ' ' << ((1 << (i - 1)) + 1) << '-' << (1 << i) << ':' << entry->delta_blk_cnt_total[i]; }
          r << std::endl;
          r << pad << " - delta blks:";
          for (int i = 0; i < 32; i++) { if (entry->delta_blk_cnt_curr[i]) r << ' ' << ((1 << (i - 1)) + 1) << '-' << (1 << i) << ':' << entry->delta_blk_cnt_curr[i]; }
          r << std::endl;
        }
        o << r.str();
        t_tot += entry->time;
        if (entry->children.size()) printEntries(o, entry->children, indent + "   ", entry->time);
      }
      if (t_tot < parent_time) {
        o << indent << "*** unaccounted: " << (parent_time - t_tot) << "s   (" << (100.0 - t_tot * 100.0 / parent_time) << "%)" << std::endl;
      }
    }
Ejemplo n.º 13
0
mixed cmd_score(string cmd, string str, object actor){
    mapping stats;
    int i;
    string *attributes;

    stats = actor->query_stats();
    attributes = map_indices(stats);
    i = sizeof(attributes);

    str = actor->query_Name() + "\n";

    while(i--){
	str += "%^BOLD%^%^CYAN%^"+pad(capitalize(attributes[i])+": ", 15)+"%^RESET%^"+stats[attributes[i]]+"\n";
    }
    #ifdef ASTARIA_CLONE
	str += "hp "+actor->query_health()+" / "+actor->query_max_health()+"\n";
    #else
    str += actor->query_diagram();
    #endif
    actor->message(str);
    return 1;
}
Ejemplo n.º 14
0
static inline std::string modulePrefix(module_t m, message_t msgType)
{
    if(m == MODULES_ALL) {
        switch(msgType) {
        case MSG_TRACE:
            return "[trace]   ";
        case MSG_DEBUG:
            return "[debug]   ";
        case MSG_INFO:
            return "[info]    ";
        case MSG_WARNING:
            return "[warning] ";
        case MSG_ERROR:
            return "[error]   ";
        case MSG_FATAL:
            return "[fatal]   ";
        default:
            return "[...]     ";
        }
    }
    return pad(std::string(1, '[') + moduleToString(m) + "] ");
}
Ejemplo n.º 15
0
extern void *__construct_new_array(void *block,ConstructorDestructor ctor,ConstructorDestructor dtor,size_t size,size_t n)
{
	char	*ptr;

	if((ptr=(char *)block)!=0L)
	{
		size_t *p = (size_t *)ptr;
		//	store number of allocated objects and size of one object at the beginnig of the allocated block
		p[0]=size;
		p[1]=n;
		ptr+=ARRAY_HEADER_SIZE;

		if(ctor)
		{	//	call constructor to initialize array
			__partial_array_destructor pad(ptr,size,n,dtor);
			char	*p;

			for(pad.i=0,p=(char *)ptr; pad.i<n; pad.i++,p+=size) CTORCALL_COMPLETE(ctor,p);
		}
	}
	return ptr;	//	return pointer to first object;
}
Ejemplo n.º 16
0
void LineBufferCPU(int inH, int inW, int padH, int padW, int kH, int kW, int stride, float *kernel, float *dataIn, float *dataOut){
  int paddedH = inH+2*padH;
  int paddedW = inW+2*padW;
  float *padded = malloc(paddedH*paddedW*sizeof(float));
  pad(inH,inW,padH,padW,dataIn,padded); 
  int outH = (paddedH-kH) + 1;
  int outW = (paddedW-kW) + 1;
  float **lb = malloc(outH*outW*sizeof(float*));
  for (int i=0; i<outH*outW; i++) lb[i] = malloc(kH*kW*sizeof(float));
  lineBuffer(paddedH,paddedW,kH,kW,stride,padded,lb);
  print_2d_data(padded, "PADDED",paddedH,paddedW);
  free(padded);
  for (int i=0; i<outH*outW; i++) {
    dataOut[i] = 0;
    for(int j=0; j<kH*kW;j++) {
      dataOut[i] += kernel[j] *lb[i][j];
    }
  }
  for (int i=0; i<outH*outW; i++) free(lb[i]);
  free(lb);
  
}
Ejemplo n.º 17
0
//-----------------------------------------------------------------------------
ImplicitMesh::ImplicitMesh(SimpleMesh * mesh) : mSourceMesh(mesh), mData(NULL)
{
  // Loop through all vertices in the mesh to determine the smallest
  // bounding box needed
  Vector3<float> pMin((std::numeric_limits<float>::max)(), (std::numeric_limits<float>::max)(), (std::numeric_limits<float>::max)());
  Vector3<float> pMax(-(std::numeric_limits<float>::max)(), -(std::numeric_limits<float>::max)(), -(std::numeric_limits<float>::max)());
  const std::vector<SimpleMesh::Vertex>& verts = mSourceMesh->GetVerts();
  for(unsigned int i=0; i < verts.size(); i++){
    const SimpleMesh::Vertex &v = verts.at(i);
    for (int j = 0; j < 3; j++) {
      if (pMin[j] > v.pos[j]) pMin[j] = v.pos[j];
      if (pMax[j] < v.pos[j]) pMax[j] = v.pos[j];
    }
  }

  // Pad with 0.1 to get around border issues
  Vector3<float> pad(0.1, 0.1, 0.1);
  pMin -= pad;
  pMax += pad;
  mBox = Bbox(pMin, pMax);
  std::cout << "Bounding box of implicit mesh: " << mBox << std::endl;
}
Ejemplo n.º 18
0
void VCXYPad_Test::copy()
{
    QWidget w;

    VCFrame parent(&w, m_doc);
    VCXYPad pad(&parent, m_doc);
    pad.setCaption("Dingdong");
    QSize size(80, 80);
    QPointF pt(50, 30);
    pad.m_area->setPosition(pt);

    VCXYPadFixture xyf1(m_doc);
    xyf1.setHead(GroupHead(1,5));
    pad.appendFixture(xyf1);

    VCXYPadFixture xyf2(m_doc);
    xyf2.setHead(GroupHead(2,7));
    pad.appendFixture(xyf2);

    VCXYPadFixture xyf3(m_doc);
    xyf3.setHead(GroupHead(3,9));
    pad.appendFixture(xyf3);

    VCXYPad* copy = qobject_cast<VCXYPad*> (pad.createCopy(&parent));
    QVERIFY(copy != NULL);
    QCOMPARE(copy->m_fixtures.size(), 3);
    QVERIFY(copy->m_fixtures[0] == xyf1);
    QVERIFY(copy->m_fixtures[1] == xyf2);
    QVERIFY(copy->m_fixtures[2] == xyf3);

    QVERIFY(&copy->m_fixtures[0] != &xyf1);
    QVERIFY(&copy->m_fixtures[1] != &xyf2);
    QVERIFY(&copy->m_fixtures[2] != &xyf3);

    QCOMPARE(copy->m_area->position(), pt);
    QCOMPARE(copy->size(), pad.size());
    QCOMPARE(copy->caption(), QString("Dingdong"));
}
Ejemplo n.º 19
0
string dsp::PlotFactory::help()
{
    unsigned ia, maxlen = 0;
    for (ia=0; ia < agents.size(); ia++) {
        if (get_name(ia).length() > maxlen) {
            maxlen = get_name(ia).length();
        }
    }

    maxlen += 2;
    string result;

    for (ia=0; ia < agents.size(); ia++) {
        result += pad(maxlen, get_name(ia)) +
                  "[" +
                  agents[ia]->get_shortcut() +
                  "]  " +
                  get_description(ia) +
                  "\n";
    }

    return result;
}
Ejemplo n.º 20
0
/*---------------------------------------------------------------------------*/
static int
create_and_secure(void)
{
  struct hdr *chdr;
  int hdr_len;
  
  hdr_len = create();
  if(hdr_len < 0) {
    return FRAMER_FAILED;
  }
  
  packetbuf_compact();
  if(!NETSTACK_LLSEC.on_frame_created()) {
    PRINTF("contikimac-framer: securing failed\n");
    return FRAMER_FAILED;
  }
  
  chdr = (struct hdr *)(((uint8_t *) packetbuf_dataptr()) - sizeof(struct hdr));
  chdr->len = packetbuf_datalen();
  pad();
  
  return hdr_len;
}
Ejemplo n.º 21
0
/* print_text_node -- convert given node to plain text and append */
void print_text_node(GString *out, node *n, scratch_pad *scratch) {
    switch (n->key) {
    case STR:
        g_string_append_printf(out,"%s",n->str);
        break;
    case METADATA:
        print_text_node_tree(out,n->children,scratch);
        break;
    case METAKEY:
        g_string_append_printf(out,"%s:\t",n->str);
        print_text_node(out,n->children,scratch);
        break;
    case METAVALUE:
        g_string_append_printf(out,"%s",n->str);
        pad(out,1, scratch);
        break;
    case FOOTER:
        break;
    default:
        fprintf(stderr, "print_text_node encountered unknown node key = %d\n",n->key);
        exit(EXIT_FAILURE);
    }
}
Ejemplo n.º 22
0
/*---------------------------------------------------------------------------*/
static int
create(void)
{
    struct hdr *chdr;
    int hdr_len;

    if(packetbuf_hdralloc(sizeof(struct hdr)) == 0) {
        PRINTF("contikimac-framer: too large header\n");
        return FRAMER_FAILED;
    }
    chdr = packetbuf_hdrptr();
    chdr->id = CONTIKIMAC_ID;
    chdr->len = packetbuf_datalen();
    pad();

    hdr_len = DECORATED_FRAMER.create();
    if(hdr_len < 0) {
        PRINTF("contikimac-framer: decorated framer failed\n");
        return FRAMER_FAILED;
    }

    return hdr_len + sizeof(struct hdr);
}
Ejemplo n.º 23
0
// NOTE: It works surprisingly well
int main() {
    mpz_class totalSum = 0;
    for (int d = 0; d < 10; ++d)
	for (int m = N - 1; m >= 1; --m) {
	    mpz_class sumOfPrimes = 0;
	    mpz_class numberOfPrimes = 0;

	    std::string pad(m, '0' + d);
	    std::string pattern;

	    if (d == 0) pattern.append(N - m, '1');
	    else pattern.append(N - m, '0');

	    do {
		int i = 1;
		while (i < pattern.size() && pattern[i] >= pattern[i - 1]) ++i;
		if (i != pattern.size()) continue;

		std::string number = pad + pattern; 
		std::sort(number.begin(), number.end());

		do {
		    if (number[0] == '0') continue;
		    mpz_class n(number);
		    if (mpz_probab_prime_p(n.get_mpz_t(), 5)) sumOfPrimes += n;
		} while (std::next_permutation(number.begin(), number.end()));
	    } while (getNext(pattern, '0' + d));

	    if (sumOfPrimes > 0) {
		totalSum += sumOfPrimes;
		break;
	    }
	}

    std::cout << totalSum << "\n";
    return 0;
}
Ejemplo n.º 24
0
Archivo: elf.c Proyecto: peadar/hdmp
/*
 * Debug output of an ELF32 program segment
 */
void
elf32DumpProgramSegment(FILE *f, struct ElfObject *obj, const Elf32_Phdr *hdr,
			int indent)
{
    const char *padding = pad(indent);
    static const char *segmentTypeNames[] = {
            "PT_NULL",
            "PT_LOAD",
            "PT_DYNAMIC",
            "PT_INTERP",
            "PT_NOTE",
            "PT_SHLIB",
            "PT_PHDR"
    };

    fprintf(f, "%stype = %xH (%s)\n"
        "%soffset = %xH (%d)\n"
        "%svirtual address = %xH (%d)\n"
        "%sphysical address = %xH (%d)\n"
        "%sfile size = %xH (%d)\n"
        "%smemory size = %xH (%d)\n"
        "%sflags = %xH (%s %s %s)\n"
        "%salignment = %xH (%d)\n",
        padding, hdr->p_type,
        hdr->p_type <= PT_PHDR ? segmentTypeNames[hdr->p_type] : "unknown",
        padding, hdr->p_offset, hdr->p_offset,
        padding, hdr->p_vaddr, hdr->p_vaddr,
        padding, hdr->p_paddr, hdr->p_paddr,
        padding, hdr->p_filesz, hdr->p_filesz,
        padding, hdr->p_memsz, hdr->p_memsz,
        padding, hdr->p_flags,
        hdr->p_flags & PF_R ? "PF_R" : "",
        hdr->p_flags & PF_W ? "PF_W" : "",
        hdr->p_flags & PF_X ? "PF_X" : "",
        padding, hdr->p_align, hdr->p_align);

}
Ejemplo n.º 25
0
void print_element_list(GString *out, element *elt, int format, int exts) {
    /* Initialize globals */
    endnotes = NULL;
    notenumber = 0;

    extensions = exts;
    padded = 2;  /* set padding to 2, so no extra blank lines at beginning */
    switch (format) {
    case HTML_FORMAT:
        print_html_element_list(out, elt, false);
        if (endnotes != NULL) {
            pad(out, 2);
            print_html_endnotes(out);
        }
        break;
    case LATEX_FORMAT:
        print_latex_element_list(out, elt);
        break;
    case GROFF_MM_FORMAT:
        if (extensions & EXT_STRIKE) {
          g_string_append_printf(out,
              ".de ST\n.nr width \\w'\\\\$1'\n\\Z@\\v'-.25m'\\l'\\\\n[width]u'@\\\\$1\\c\n..\n.\n");
        }
        print_groff_mm_element_list(out, elt);
        break;
    case ODF_FORMAT:
        print_odf_header(out);
        g_string_append_printf(out, "<office:body>\n<office:text>\n");
        if (elt != NULL) print_odf_element_list(out,elt);
        print_odf_footer(out);
        break;
    default:
        fprintf(stderr, "print_element - unknown format = %d\n", format); 
        exit(EXIT_FAILURE);
    }
}
Ejemplo n.º 26
0
void read_sff_file(char* addr) {
    sff_common_header* head = (sff_common_header*) addr;
    
    if(ntohl(head->magic) != SFF_MAGIC) {
        fprintf(stderr, "Warning: Bad magic number\n");
    }

    uint32_t nreads     = ntohl(head->nreads);
    uint16_t header_len = ntohs(head->header_len);
    uint16_t flow_len   = ntohs(head->flow_len);
    char* current_addr  = addr + header_len;
        
    for(int i = 0; i < int(nreads); ++i) {
        sff_read_header* read = (sff_read_header*) current_addr;
        uint16_t rheader_len = ntohs(read->header_len);
        uint32_t nbases = ntohl(read->nbases);
        uint16_t name_len = ntohs(read->name_len);
        uint16_t trim_left = ntohs(read->clip_qual_left) - 1; // these appear to be indexed from 1
        uint16_t trim_right = ntohs(read->clip_qual_right) - 1;
        
        /*
        printf( "header_len = %d\n"
                "name_len = %d\n"
                "nbases = %d\n\n",
                ntohs(read->header_len),
                ntohs(read->name_len),
                ntohl(read->nbases));
        */
        
        get_read(current_addr + rheader_len, flow_len, nbases, trim_left, trim_right);
        
        //exit(EXIT_SUCCESS);
                
        current_addr = current_addr + rheader_len + pad((flow_len * 2) + (nbases * 3));
    }
}
Ejemplo n.º 27
0
void endRound(){
	if (ccount>21){	//if dealer busts
		sleep(1.5);
		pad(20); printf("The dealer busted!\n");
		win();
	}
	else if (ccount<pcount){ //neither bust, player wins
		sleep(1.5);
		pad(20); printf("Your card total of %d is higher than the dealers total of %d.\n", pcount, ccount);
		win();
	}
	else if (ccount>pcount) { //neither bust, dealer wins
		sleep(1.5);
		pad(20); printf("Your card total of %d is lower than the dealers total of %d.\n", pcount, ccount);
		lose();
	}
	else if (ccount==pcount){ //if its a tie
		sleep(1.5);
		pad(20); printf("Both you and the dealer had total card count of %d.\n", pcount);
		pad(20); printf("It's a Push. Your Chips Are Returned.\n\n");
		pad(15); printf("Chip Count: %d\n\n", chips);
	}
}
Ejemplo n.º 28
0
Archivo: WORKRULES.c Proyecto: ems/TMS
BOOL CALLBACK WORKRULESMsgProc(HWND hWndDlg, UINT Message, WPARAM wParam, LPARAM lParam)
{
  static PDISPLAYINFO pDI;
  static HANDLE hCtlALLRUNTYPES;
  static HANDLE hCtlONERUNTYPE;
  static HANDLE hCtlRUNTYPES;
  static HANDLE hCtlPREMIUMLIST;
  static HANDLE hCtlPREMIUMTIME;
  static HANDLE hCtlTIMECOUNTSINOT;
  static HANDLE hCtlPREMIUMREPORT;
  static HANDLE hCtlTRAVELTIMEPREMIUM;
  static HANDLE hCtlDONTPAY;
  static HANDLE hCtlDONTINCORPORATE;
  static HANDLE hCtlUSECONNIFNOSCHED;
  static HANDLE hCtlIDNEWPREMIUM;
  static HANDLE hCtlIDSETPREMIUM;
  static int    runtypeIndex;
  static int    slotNumber;
  static int    feasibleRG[4] = {WORKRULES_TIMEENTERED, WORKRULES_ASINCONNECTIONS,
                                 WORKRULES_ASPERSCHEDULE, WORKRULES_ASPERSCHEDULEDWELL};
  static int    paidHowRG[4]  = {WORKRULES_PAYACTUAL, WORKRULES_PAYFLAT, 
                                 WORKRULES_PAYPERCENTAGE, WORKRULES_PAYSTAGGERED};
  int    nI;
  int    nJ;
  int    nK;
  int    nRc;
  long   tempLong;
  BOOL   enable;
  int    rcode2;
  short int wmId;
  short int wmEvent;

  switch(Message)
  {
//
//  WM_INITDIALOG - Initialize the dialog
//
    case WM_INITDIALOG:
      pDI = (PDISPLAYINFO)lParam;
      if(pDI == NULL)
      {
        SendMessage(hWndDlg, WM_COMMAND, MAKEWPARAM(IDCANCEL, 0), (LPARAM)0);
        break;
      }
//
//  Set up the handles to the controls
//
      hCtlALLRUNTYPES = GetDlgItem(hWndDlg, WORKRULES_ALLRUNTYPES);
      hCtlONERUNTYPE = GetDlgItem(hWndDlg, WORKRULES_ONERUNTYPE);
      hCtlRUNTYPES = GetDlgItem(hWndDlg, WORKRULES_RUNTYPES);
      hCtlPREMIUMLIST = GetDlgItem(hWndDlg, WORKRULES_PREMIUMLIST);
      hCtlPREMIUMTIME = GetDlgItem(hWndDlg, WORKRULES_PREMIUMTIME);
      hCtlTIMECOUNTSINOT = GetDlgItem(hWndDlg, WORKRULES_TIMECOUNTSINOT);
      hCtlPREMIUMREPORT = GetDlgItem(hWndDlg, WORKRULES_PREMIUMREPORT);
      hCtlTRAVELTIMEPREMIUM= GetDlgItem(hWndDlg, WORKRULES_TRAVELTIMEPREMIUM);
      hCtlUSECONNIFNOSCHED = GetDlgItem(hWndDlg, WORKRULES_USECONNIFNOSCHED);
      hCtlDONTPAY = GetDlgItem(hWndDlg, WORKRULES_DONTPAY);
      hCtlDONTINCORPORATE = GetDlgItem(hWndDlg, WORKRULES_DONTINCORPORATE);
      hCtlIDNEWPREMIUM = GetDlgItem(hWndDlg, IDNEWPREMIUM);
      hCtlIDSETPREMIUM = GetDlgItem(hWndDlg, IDSETPREMIUM);
//
//  Set up the premium report combo box
//
      SendMessage(hWndDlg, WM_USERSETUP, (WPARAM)WORKRULES_PREMIUMREPORT, (LPARAM)0);
//
//  Set the "All" runtypes radio button
//
      SendMessage(hCtlALLRUNTYPES, BM_SETCHECK, (WPARAM)TRUE, (LPARAM)0);
      SendMessage(hWndDlg, WM_COMMAND, MAKEWPARAM(WORKRULES_ALLRUNTYPES, 0), (LPARAM)0);
//
//  So we know if he hasn't picked a premium
//
      premiumIndex = NO_RECORD;
//
//  Now display the associated premiums with the selected runtype.  If there
//  are any premiums, the premiumIndex will be reset to the first item in the list box
//
      SendMessage(hWndDlg, WM_COMMAND, MAKEWPARAM(WORKRULES_RUNTYPES, CBN_SELCHANGE), (LPARAM)0);
      break;  //  End of WM_INITDIALOG
//
//  WM_CLOSE
//
    case WM_CLOSE:
      SendMessage(hWndDlg, WM_COMMAND, MAKEWPARAM(IDCANCEL, 0), (LPARAM)0);
      break;
//
//  WM_USERSETUP:
//
    case WM_USERSETUP:
      switch(wParam)
      {
//
//  WORKRULES_PREMIUMREPORT
//
        case WORKRULES_PREMIUMREPORT:
          strcpy(TABLEVIEWKey1.Name, TABLENAME_RUNS);
          pad(TABLEVIEWKey1.Name, TABLEVIEW_NAME_LENGTH);
          btrieve(B_GETEQUAL, TMS_TABLEVIEW, &TABLEVIEW, &TABLEVIEWKey1, 1);
          CREATEDKey1.File = TABLEVIEW.Id;
          CREATEDKey1.Sequence = 0;
          rcode2 = btrieve(B_GETGREATEROREQUAL, TMS_CREATED, &CREATED, &CREATEDKey1, 1);
          while(rcode2 == 0 &&
                CREATED.File == TABLEVIEW.Id)
          {
            strncpy(tempString, CREATED.Name, CREATED_NAME_LENGTH);
            trim(tempString, CREATED_NAME_LENGTH);
            nI = SendMessage(hCtlPREMIUMREPORT, CB_ADDSTRING, (WPARAM)0, (LONG)(LPSTR)tempString);
            ATTRIBUTESKey0.Id = CREATED.Id;
            rcode2 = btrieve(B_GETEQUAL, TMS_ATTRIBUTES, &ATTRIBUTES, &ATTRIBUTESKey0, 0);
            if(rcode2 != 0)
              ATTRIBUTES.formattedDataType = NO_RECORD;
            SendMessage(hCtlPREMIUMREPORT, CB_SETITEMDATA, (WPARAM)nI,
                  MAKELPARAM(ATTRIBUTES.formattedDataType, CREATED.Id));
            rcode2 = btrieve(B_GETNEXT, TMS_CREATED, &CREATED, &CREATEDKey1, 1);
          }
          break;
//
//  WORKRULES_RUNTYPES - Set up the combo box
//
        case WORKRULES_RUNTYPES:
          SendMessage(hCtlRUNTYPES, CB_RESETCONTENT, (WPARAM)0, (LPARAM)0);
          for(nI = 0; nI < NUMRUNTYPES; nI++)
          {
            for(nJ = 0; nJ < NUMRUNTYPESLOTS; nJ++)
            {
              if(RUNTYPE[nI][nJ].flags & RTFLAGS_INUSE)
              {
                nK = SendMessage(hCtlRUNTYPES, CB_ADDSTRING, (WPARAM)0,
                      (LONG)(LPSTR)RUNTYPE[nI][nJ].localName);
                SendMessage(hCtlRUNTYPES, CB_SETITEMDATA, (WPARAM)nK, MAKELPARAM(nI, nJ));
              }
            }
          }
          break;
//
//  WORKRULES_PREMIUMLIST - Set up the list box based on runtype
//
        case WORKRULES_PREMIUMLIST:
          nI = SendMessage(hCtlRUNTYPES, CB_GETCURSEL, (WPARAM)0, (LPARAM)0);
          tempLong = (nI == CB_ERR
                ? NO_RECORD : SendMessage(hCtlRUNTYPES, CB_GETITEMDATA, (WPARAM)nI, (LPARAM)0));
          SendMessage(hCtlPREMIUMLIST, LB_RESETCONTENT, (WPARAM)0, (LPARAM)0);
          for(nI = 0; nI < numPremiums; nI++)
          {
            if(PREMIUM[nI].runtype == tempLong)
            {
              nJ = SendMessage(hCtlPREMIUMLIST, LB_ADDSTRING, (WPARAM)0, (LONG)(LPSTR)PREMIUM[nI].localName);
              SendMessage(hCtlPREMIUMLIST, LB_SETITEMDATA, (WPARAM)nJ, MAKELPARAM(0, nI));
            }
          }
          nI = SendMessage(hCtlPREMIUMLIST, LB_GETCOUNT, (WPARAM)0, (LPARAM)0);
          EnableWindow(hCtlIDSETPREMIUM, nI > 0);
          if(nI > 0)
          {
            SendMessage(hCtlPREMIUMLIST, LB_SETCURSEL, (WPARAM)0, (LPARAM)0);
            SendMessage(hWndDlg, WM_COMMAND, MAKEWPARAM(WORKRULES_PREMIUMLIST, LBN_SELCHANGE), (LPARAM)0);
            nK = SendMessage(hCtlPREMIUMLIST, LB_GETCURSEL, (WPARAM)0, (LPARAM)0);
            tempLong = SendMessage(hCtlPREMIUMLIST, LB_GETITEMDATA, (WPARAM)nK, (LPARAM)0);
            premiumIndex = HIWORD(tempLong);
          }
          break;
      }
      break;
//
//  WM_COMMAND
//
    case WM_COMMAND:
      wmId = LOWORD(wParam);
      wmEvent = HIWORD(wParam);
      switch(wmId)
      {
//
//  WORKRULES_TRAVELTIMEPREMIUM check box
//
        case WORKRULES_TRAVELTIMEPREMIUM:
          enable = SendMessage(hCtlTRAVELTIMEPREMIUM, BM_GETCHECK, (WPARAM)0, (LPARAM)0);
          EnableTravelSection(hWndDlg, enable);
          if(enable)
          {
            SendDlgItemMessage(hWndDlg, WORKRULES_TIMEENTERED, BM_SETCHECK, (WPARAM)TRUE, (LPARAM)0);
            SendDlgItemMessage(hWndDlg, WORKRULES_PAYACTUAL, BM_SETCHECK, (WPARAM)TRUE, (LPARAM)0);
          }
          break;
//
//  WORKRULES_TIMEENTERED and WORKRULES_ASINCONNECTIONS radio buttons
//
        case WORKRULES_TIMEENTERED:
        case WORKRULES_ASINCONNECTIONS:
          EnableWindow(hCtlUSECONNIFNOSCHED, FALSE);
          break;
//
//  WORKRULES_ASPERSCHEDULE and WORKRULES_ASPERSCHEDULEDWELL radio buttons
//
        case WORKRULES_ASPERSCHEDULE:
        case WORKRULES_ASPERSCHEDULEDWELL:
          EnableWindow(hCtlUSECONNIFNOSCHED, TRUE);
          break;
//
//  WORKRULES_ALLRUNTYPES radio button
//  WORKRULES_ONERUNTYPE radio button
//
        case WORKRULES_ALLRUNTYPES:
        case WORKRULES_ONERUNTYPE:
          if(wmId == WORKRULES_ALLRUNTYPES)
          {
            EnableWindow(hCtlRUNTYPES, FALSE);
            SendMessage(hCtlRUNTYPES, CB_RESETCONTENT, (WPARAM)0, (LPARAM)0);
          }
          else
          {
            EnableWindow(hCtlRUNTYPES, TRUE);
            SendMessage(hWndDlg, WM_USERSETUP, (WPARAM)WORKRULES_RUNTYPES, (LPARAM)0);
            if(SendMessage(hCtlRUNTYPES, CB_GETCOUNT, (WPARAM)0, (LPARAM)0) > 0)
              SendMessage(hCtlRUNTYPES, CB_SETCURSEL, (WPARAM)0, (LPARAM)0);
          }
          SendMessage(hWndDlg, WM_COMMAND, MAKEWPARAM(WORKRULES_RUNTYPES, CBN_SELCHANGE), (LPARAM)0);
          break;

//
//  WORKRULES_RUNTYPES list box
//
        case WORKRULES_RUNTYPES:
          switch(wmEvent)
          {
//
//  CBN_SELCHANGE
//
            case CBN_SELCHANGE:
              nI = SendMessage(hCtlRUNTYPES, CB_GETCURSEL, (WPARAM)0, (LPARAM)0);
              if(nI == LB_ERR)
              {
                runtypeIndex = NO_RECORD;
                slotNumber = NO_RECORD;
              }
              else
              {
                tempLong = SendMessage(hCtlRUNTYPES, CB_GETITEMDATA, (WPARAM)nI, (LPARAM)0);
                runtypeIndex = LOWORD(tempLong);
                slotNumber = HIWORD(tempLong);
              }
              SendMessage(hWndDlg, WM_USERSETUP, (WPARAM)WORKRULES_PREMIUMLIST, (LPARAM)0);
              break;
          }
          break;
//
//  WORKRULES_PREMIUMLIST list box
//
        case WORKRULES_PREMIUMLIST:
          switch(wmEvent)
          {
            case LBN_SELCHANGE:
              nJ = SendMessage(hCtlPREMIUMLIST, LB_GETCURSEL, (WPARAM)0, (LPARAM)0);
              enable = (nJ != LB_ERR);
              EnableWindow(hCtlPREMIUMTIME, enable);
              EnableWindow(hCtlTIMECOUNTSINOT, enable);
              EnableWindow(hCtlPREMIUMREPORT, enable);
              EnableWindow(hCtlIDSETPREMIUM, enable);
              EnableWindow(hCtlTRAVELTIMEPREMIUM, enable);
//
//  Display the premium characteristics
//
//  Pay type
//
              if(enable)
              {
                tempLong = SendMessage(hCtlPREMIUMLIST, LB_GETITEMDATA, (WPARAM)nJ, (LPARAM)0);
                nI = HIWORD(tempLong);
                SendMessage(hWndDlg, WM_COMMAND, MAKEWPARAM(WORKRULES_PREMIUMTIME, 0), (LPARAM)0);
                SendMessage(hCtlPREMIUMTIME, WM_SETTEXT, (WPARAM)0, (LONG)(LPSTR)chhmm(PREMIUM[nI].time));
//
//  Time counts in OT
//
                SendMessage(hCtlTIMECOUNTSINOT, BM_SETCHECK,
                      (WPARAM)(PREMIUM[nI].flags & PREMIUMFLAGS_TIMECOUNTSINOT), (LPARAM)0);
//
//  Don't pay when paying intervening time
//
                SendMessage(hCtlDONTPAY, BM_SETCHECK,
                      (WPARAM)(PREMIUM[nI].flags & PREMIUMFLAGS_DONTPAYIFPAYINGINTERVENING),
                      (LPARAM)0);
//
//  Premium reported as...
//
                nK = SendMessage(hCtlPREMIUMREPORT, CB_GETCOUNT, (WPARAM)0, (LPARAM)0);
                for(nJ = 0; nJ < nK; nJ++)
                {
                  if(PREMIUM[nI].reportedAs ==
                        HIWORD(SendMessage(hCtlPREMIUMREPORT, CB_GETITEMDATA, (WPARAM)nJ, (LPARAM)0)))
                  {
                    SendMessage(hCtlPREMIUMREPORT, CB_SETCURSEL, (WPARAM)nJ, (LPARAM)0);
                    break;
                  }
                }
//
//  Travel time premiums
//
                if(!(PREMIUM[nI].flags & PREMIUMFLAGS_TRAVELTIMEPREMIUM))
                {
                  SendMessage(hCtlTRAVELTIMEPREMIUM, BM_SETCHECK, (WPARAM)FALSE, (LPARAM)0);
                  EnableTravelSection(hWndDlg, FALSE);
                }
                else
                {
                  SendMessage(hCtlTRAVELTIMEPREMIUM, BM_SETCHECK, (WPARAM)TRUE, (LPARAM)0);
                  EnableTravelSection(hWndDlg, TRUE);
                  SendDlgItemMessage(hWndDlg, PREMIUM[nI].payTravelTime, BM_SETCHECK, (WPARAM)TRUE, (LPARAM)0);
                  if(PREMIUM[nI].payTravelTime == feasibleRG[0] ||
                        PREMIUM[nI].payTravelTime == feasibleRG[1])
                    EnableWindow(hCtlUSECONNIFNOSCHED, FALSE);
                  else if(PREMIUM[nI].flags & PREMIUMFLAGS_USECONNECTIONIFNODYNAMIC)
                    SendMessage(hCtlUSECONNIFNOSCHED, BM_SETCHECK, (WPARAM)TRUE, (LPARAM)0);
                  SendDlgItemMessage(hWndDlg, PREMIUM[nI].payHow, BM_SETCHECK, (WPARAM)TRUE, (LPARAM)0);
                  if(PREMIUM[nI].payHow != WORKRULES_PAYACTUAL)
                  {
                    gcvt(PREMIUM[nI].payHowPercent, NUMDECS, tempString);
                    ltoa(PREMIUM[nI].payHowMinutes, szarString, 10);
                    if(PREMIUM[nI].payHow == WORKRULES_PAYFLAT)
                    {
                      SendDlgItemMessage(hWndDlg, WORKRULES_PAYFLATMINUTES, WM_SETTEXT, (WPARAM)0, (LONG)(LPSTR)szarString);
                    }
                    else if(PREMIUM[nI].payHow == WORKRULES_PAYPERCENTAGE)
                    {
                      SendDlgItemMessage(hWndDlg, WORKRULES_PERCENTOFACTUAL, WM_SETTEXT, (WPARAM)0, (LONG)(LPSTR)tempString);
                    }
                    else if(PREMIUM[nI].payHow == WORKRULES_PAYSTAGGERED)
                    {
                      SendDlgItemMessage(hWndDlg, WORKRULES_STAGGEREDPERCENT, WM_SETTEXT, (WPARAM)0, (LONG)(LPSTR)tempString);
                      SendDlgItemMessage(hWndDlg, WORKRULES_STAGGEREDMINUTES, WM_SETTEXT, (WPARAM)0, (LONG)(LPSTR)szarString);
                    }
                  }
                }
//
//  And set up the premium Index
//
                nK = SendMessage(hCtlPREMIUMLIST, LB_GETCURSEL, (WPARAM)0, (LPARAM)0);
                tempLong = SendMessage(hCtlPREMIUMLIST, LB_GETITEMDATA, (WPARAM)nK, (LPARAM)0);
                premiumIndex = HIWORD(tempLong);
              }
              break;

            case LBN_DBLCLK:
              SendMessage(hWndDlg, WM_COMMAND, MAKEWPARAM(IDSETPREMIUM, 0), (LPARAM)0);
              break;
          }
          break;
//
//  IDNEWPREMIUM - Display the PREMIUMS dialog box, and...
//  IDSETPREMIUM - Add a new premium
//
        case IDNEWPREMIUM:
        case IDSETPREMIUM:
          premiumRuntype = runtypeIndex;
          premiumTimePeriod = slotNumber;
          premiumNew = wmId == IDNEWPREMIUM;
          if(!premiumNew)
          {
            nI = SendMessage(hCtlPREMIUMLIST, LB_GETCURSEL, (WPARAM)0, (LPARAM)0);
            tempLong = SendMessage(hCtlPREMIUMLIST, LB_GETITEMDATA, (WPARAM)nI, (LPARAM)0);
            premiumIndex = HIWORD(tempLong);
          }
          nRc = DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_PREMIUMS), hWndDlg,
                (DLGPROC)PREMIUMSMsgProc, (LPARAM)pDI);
          if(nRc)
          {
            if(wmId == IDNEWPREMIUM)
            {
              nJ = SendMessage(hCtlRUNTYPES, CB_GETCURSEL, (WPARAM)0, (LPARAM)0);
              PREMIUM[premiumIndex].runtype =
                    nJ == CB_ERR ? NO_RECORD : SendMessage(hCtlRUNTYPES, CB_GETITEMDATA, (WPARAM)nJ, (LPARAM)0);
            }
            SendMessage(hWndDlg, WM_USERSETUP, (WPARAM)WORKRULES_PREMIUMLIST, (LPARAM)0);
          }
          break;
//
//  IDCANCEL Button labelled "Finished"
//
        case IDCANCEL:
          EndDialog(hWndDlg, FALSE);
          break;
//
//  IDHELP
//
        case IDHELP:
          WinHelp(hWndDlg, szarHelpFile, HELP_CONTEXT, Premium_Definition_Step_1);
          break;
//
//  IDOK Button labelled "Update"
//
        case IDOK:
//
//  Premiumtype and amount
//
          if(premiumIndex != NO_RECORD)
          {
            SendMessage(hCtlPREMIUMTIME, WM_GETTEXT, (WPARAM)TEMPSTRING_LENGTH, (LONG)(LPSTR)tempString);
            PREMIUM[premiumIndex].time = thhmm(tempString);
//
//  Minutes count...
//
            if(SendMessage(hCtlTIMECOUNTSINOT, BM_GETCHECK, (WPARAM)0, (LPARAM)0))
            {
              PREMIUM[premiumIndex].flags |= PREMIUMFLAGS_TIMECOUNTSINOT;
            }
            else
            {
              if(PREMIUM[premiumIndex].flags & PREMIUMFLAGS_TIMECOUNTSINOT)
              {
                PREMIUM[premiumIndex].flags &= ~PREMIUMFLAGS_TIMECOUNTSINOT;
              }
            }
//
//  Don't pay
//
            if(SendMessage(hCtlDONTPAY, BM_GETCHECK, (WPARAM)0, (LPARAM)0))
            {
              PREMIUM[premiumIndex].flags |= PREMIUMFLAGS_DONTPAYIFPAYINGINTERVENING;
            }
            else
            {
              if(PREMIUM[premiumIndex].flags & PREMIUMFLAGS_DONTPAYIFPAYINGINTERVENING)
              {
                PREMIUM[premiumIndex].flags &= ~PREMIUMFLAGS_DONTPAYIFPAYINGINTERVENING;
              }
            }
//
//  Premium reported as
//
            nI = SendMessage(hCtlPREMIUMREPORT, CB_GETCURSEL, (WPARAM)0, (LPARAM)0);
            if(nI == CB_ERR)
            {
              TMSError(hWndDlg, MB_ICONSTOP, ERROR_091, hCtlPREMIUMREPORT);
              break;
            }
            tempLong = SendMessage(hCtlPREMIUMREPORT, CB_GETITEMDATA, (WPARAM)nI, (LPARAM)0);
            PREMIUM[premiumIndex].reportedAs = HIWORD(tempLong);
            PREMIUM[premiumIndex].formattedDataType = LOWORD(tempLong);
//
//  Travel Time Premium
//
            if(!SendMessage(hCtlTRAVELTIMEPREMIUM, BM_GETCHECK, (WPARAM)0, (LPARAM)0))
            {
              if(PREMIUM[premiumIndex].flags & PREMIUMFLAGS_TRAVELTIMEPREMIUM)
              {
                PREMIUM[premiumIndex].flags &= ~PREMIUMFLAGS_TRAVELTIMEPREMIUM;
              }
              if(PREMIUM[premiumIndex].flags & PREMIUMFLAGS_USECONNECTIONIFNODYNAMIC)
              {
                PREMIUM[premiumIndex].flags &= ~PREMIUMFLAGS_USECONNECTIONIFNODYNAMIC;
              }
              PREMIUM[premiumIndex].payTravelTime = NO_RECORD;
              PREMIUM[premiumIndex].payHow = NO_RECORD;
              PREMIUM[premiumIndex].payHowMinutes = 0;
              PREMIUM[premiumIndex].payHowPercent = (float)0.0;
            }
            else
            {
              PREMIUM[premiumIndex].flags |= PREMIUMFLAGS_TRAVELTIMEPREMIUM;
              for(nI = 0; nI < 4; nI++)
              {
                if(SendDlgItemMessage(hWndDlg, feasibleRG[nI], BM_GETCHECK, (WPARAM)0, (LPARAM)0))
                {
                  PREMIUM[premiumIndex].payTravelTime = feasibleRG[nI];
                  break;
                }
              }
              if(PREMIUM[premiumIndex].payTravelTime == feasibleRG[0] ||
                    PREMIUM[premiumIndex].payTravelTime == feasibleRG[1])
              {
                if(PREMIUM[premiumIndex].flags & PREMIUMFLAGS_USECONNECTIONIFNODYNAMIC)
                {
                  PREMIUM[premiumIndex].flags &= ~PREMIUMFLAGS_USECONNECTIONIFNODYNAMIC;
                }
              }
              else
              {
                if(SendMessage(hCtlUSECONNIFNOSCHED, BM_GETCHECK, (WPARAM)0, (LPARAM)0))
                {
                  PREMIUM[premiumIndex].flags |= PREMIUMFLAGS_USECONNECTIONIFNODYNAMIC;
                }
                else if(PREMIUM[premiumIndex].flags & PREMIUMFLAGS_USECONNECTIONIFNODYNAMIC)
                {
                  PREMIUM[premiumIndex].flags &= ~PREMIUMFLAGS_USECONNECTIONIFNODYNAMIC;
                }
              }
              for(nI = 0; nI < 4; nI++)
              {
                if(SendDlgItemMessage(hWndDlg, paidHowRG[nI], BM_GETCHECK, (WPARAM)0, (LPARAM)0))
                {
                  PREMIUM[premiumIndex].payHow = paidHowRG[nI];
                  strcpy(tempString, "0");
                  strcpy(szarString, "0");
                  if(paidHowRG[nI] == WORKRULES_PAYFLAT)
                  {
                    SendDlgItemMessage(hWndDlg, WORKRULES_PAYFLATMINUTES, WM_GETTEXT,
                          (WPARAM)sizeof(szarString), (LONG)(LPSTR)szarString);
                  }
                  else if(paidHowRG[nI] == WORKRULES_PAYPERCENTAGE)
                  {
                    SendDlgItemMessage(hWndDlg, WORKRULES_PERCENTOFACTUAL, WM_GETTEXT,
                          (WPARAM)TEMPSTRING_LENGTH, (LONG)(LPSTR)tempString);
                  }
                  else if(PREMIUM[premiumIndex].payHow == WORKRULES_PAYSTAGGERED)
                  {
                    SendDlgItemMessage(hWndDlg, WORKRULES_STAGGEREDPERCENT, WM_GETTEXT,
                          (WPARAM)TEMPSTRING_LENGTH, (LONG)(LPSTR)tempString);
                    SendDlgItemMessage(hWndDlg, WORKRULES_STAGGEREDMINUTES, WM_GETTEXT,
                          (WPARAM)sizeof(szarString), (LONG)(LPSTR)szarString);
                  }
                  PREMIUM[premiumIndex].payHowMinutes = atol(szarString);
                  PREMIUM[premiumIndex].payHowPercent = (float)atof(tempString);
                  break;
                }
              }
              SendDlgItemMessage(hWndDlg, WORKRULES_STAGGEREDPERCENT, WM_GETTEXT, (WPARAM)TEMPSTRING_LENGTH, (LONG)(LPSTR)tempString);
              PREMIUM[premiumIndex].payHowPercent = (float)atof(tempString);
            }
          }
//
//  Point each premium to the appropriate "formattedDataType"
//
          SetupPremiumAttributes();
//
//  Flag the changes to the INI file
//
          m_bWorkrulesChanged = TRUE;
          break;
      }
      break;

    default:
      return FALSE;
   }
   return TRUE;
}
Ejemplo n.º 29
0
 int DES_crypt::des_encrypt(const ObString &user_name, const int64_t timestamp, const int64_t skey, char *buffer, int64_t &buffer_length)
 {
   int err = OB_SUCCESS;
   if(buffer_length <= (int64_t)(sizeof(int64_t) + 2 * sizeof(int32_t) + user_name.length()) || buffer_length % 8 != 0)
   {
     err = OB_INVALID_ARGUMENT;
     TBSYS_LOG(WARN, "invalid argument. buffer_length = %ld, should be 80", buffer_length);
   }
   if(OB_SUCCESS == err)
   {
     if(user_name.length() == 0)
     {
       err = OB_INVALID_ARGUMENT;
       TBSYS_LOG(WARN, "user_name should not be null. user_name.length=%d", user_name.length());
     }
   }
   if(OB_SUCCESS == err)
   {
     data_.initialized = 0;
     err = stringTobyte(keybyte_, OB_ENRYPT_KEY_BYTE, reinterpret_cast<const char*>(&skey), sizeof(int64_t));
     if(err != OB_SUCCESS)
     {
       TBSYS_LOG(WARN, "fail to stringTobyte. err=%d", err);
     }
     else
     {
       setkey_r(keybyte_, &data_);
     }
   }
   int64_t length = 0;
   if(OB_SUCCESS == err)
   {
     length = 2 * sizeof(int32_t)  + sizeof(int64_t) + user_name.length();
     original_txt_length_ = static_cast<int32_t>(length);
     err = pad(txtptr_, OB_MAX_TOKEN_BUFFER_LENGTH, length);
     if(OB_SUCCESS != err)
     {
       TBSYS_LOG(WARN, "fail to pad array. err=%d", err);
     }
   }
   int64_t pos = 0;
   if(OB_SUCCESS == err)
   {
     *(reinterpret_cast<int32_t*>(txtptr_ + pos)) = OB_CRYPT_MAGIC_NUM;
     pos += sizeof(int32_t);
     *(reinterpret_cast<int32_t*>(txtptr_ + pos)) = user_name.length();
     pos += sizeof(int32_t);
     memcpy(txtptr_ + pos, user_name.ptr(), user_name.length());
     pos += user_name.length();
     *(reinterpret_cast<int64_t*>(txtptr_ + pos)) = timestamp;
     pos += sizeof(int64_t);       
   }
   if(OB_SUCCESS == err)
   {
     err = stringTobyte(txtbyte_, OB_ENCRYPT_TXT_BYTE, txtptr_, length);
     if(err != OB_SUCCESS)
     {
       TBSYS_LOG(WARN, "fail to translate string to byte.err=%d", err);
     }
   }  
   if(OB_SUCCESS == err)
   {
     length = length * OB_BYTE_NUM;
     char *ptr = txtbyte_;
     for(int64_t i = 0; i < length; i += OB_CRYPT_UNIT)
     {
       ptr = &txtbyte_[i];
       encrypt_r(ptr, ENCODE_FLAG, &data_);
     }
   }
   if(OB_SUCCESS == err)
   {
     err = byteTostring(buffer, buffer_length, txtbyte_, length);
     if(err != OB_SUCCESS)
     {
       TBSYS_LOG(WARN, "fail to translate to string.err=%d", err);
     }
     else
     {
       buffer_length = length / OB_BYTE_NUM;
     }
   }  
   return err;
 }
Ejemplo n.º 30
0
static int
append_number(struct snprintf_state *state,
	      u_longest num, unsigned base, const char *rep,
	      int width, int prec, int flags, int minusp)
{
    int len = 0;
    u_longest n = num;
    char nstr[64]; /* enough for <192 bit octal integers */
    int nstart, nlen;
    char signchar;

    /* given precision, ignore zero flag */
    if(prec != -1)
	flags &= ~zero_flag;
    else
	prec = 1;

    /* format number as string */
    nstart = sizeof(nstr);
    nlen = 0;
    nstr[--nstart] = '\0';
    do {
	assert(nstart > 0);
	nstr[--nstart] = rep[n % base];
	++nlen;
	n /= base;
    } while(n);

    /* zero value with zero precision should produce no digits */
    if(prec == 0 && num == 0) {
	nlen--;
	nstart++;
    }

    /* figure out what char to use for sign */
    if(minusp)
	signchar = '-';
    else if((flags & plus_flag))
	signchar = '+';
    else if((flags & space_flag))
	signchar = ' ';
    else
	signchar = '\0';

    if((flags & alternate_flag) && base == 8) {
	/* if necessary, increase the precision to
	   make first digit a zero */

	/* XXX C99 claims (regarding # and %o) that "if the value and
           precision are both 0, a single 0 is printed", but there is
           no such wording for %x. This would mean that %#.o would
           output "0", but %#.x "". This does not make sense, and is
           also not what other printf implementations are doing. */

	if(prec <= nlen && nstr[nstart] != '0' && nstr[nstart] != '\0')
	    prec = nlen + 1;
    }

    /* possible formats:
       pad | sign | alt | zero | digits
       sign | alt | zero | digits | pad   minus_flag
       sign | alt | zero | digits zero_flag */

    /* if not right justifying or padding with zeros, we need to
       compute the length of the rest of the string, and then pad with
       spaces */
    if(!(flags & (minus_flag | zero_flag))) {
	if(prec > nlen)
	    width -= prec;
	else
	    width -= nlen;

	if(use_alternative(flags, num, base))
	    width -= 2;

	if(signchar != '\0')
	    width--;

	/* pad to width */
	len += pad(state, width, ' ');
    }
    if(signchar != '\0') {
	(*state->append_char)(state, signchar);
	++len;
    }
    if(use_alternative(flags, num, base)) {
	(*state->append_char)(state, '0');
	(*state->append_char)(state, rep[10] + 23); /* XXX */
	len += 2;
    }
    if(flags & zero_flag) {
	/* pad to width with zeros */
	if(prec - nlen > width - len - nlen)
	    len += pad(state, prec - nlen, '0');
	else
	    len += pad(state, width - len - nlen, '0');
    } else
	/* pad to prec with zeros */
	len += pad(state, prec - nlen, '0');

    while(nstr[nstart] != '\0') {
	(*state->append_char)(state, nstr[nstart++]);
	++len;
    }

    if(flags & minus_flag)
	len += pad(state, width - len, ' ');

    return len;
}