static int StatHostTime(void) { int64 hostSecs; int64 hostUsecs; time_t sec; char buf[256]; gchar *timeUtf8; Backdoor_proto bp; bp.in.cx.halfs.low = BDOOR_CMD_GETTIMEFULL; Backdoor(&bp); if (bp.out.ax.word == BDOOR_MAGIC) { hostSecs = ((uint64)bp.out.si.word << 32) | bp.out.dx.word; } else { /* Falling back to older command. */ bp.in.cx.halfs.low = BDOOR_CMD_GETTIME; Backdoor(&bp); hostSecs = bp.out.ax.word; } hostUsecs = bp.out.bx.word; if (hostSecs <= 0) { ToolsCmd_PrintErr("%s", SU_(stat.gettime.failed, "Unable to get host time.\n")); return EX_TEMPFAIL; } sec = hostSecs + (hostUsecs / 1000000); if (strftime(buf, sizeof buf, "%d %b %Y %H:%M:%S", localtime(&sec)) == 0) { ToolsCmd_PrintErr("%s", SU_(stat.formattime.failed, "Unable to format host time.\n")); return EX_TEMPFAIL; } timeUtf8 = g_locale_to_utf8(buf, -1, NULL, NULL, NULL); if (timeUtf8 == NULL) { ToolsCmd_PrintErr("%s", SU_(stat.formattime.failed, "Unable to format host time.\n")); return EX_TEMPFAIL; } g_print("%s\n", timeUtf8); g_free(timeUtf8); return EXIT_SUCCESS; }
static uint32 CopyPasteGetNextPiece(void) { Backdoor_proto bp; bp.in.cx.halfs.low = BDOOR_CMD_GETNEXTPIECE; Backdoor(&bp); return bp.out.ax.word; }
int32 CopyPaste_GetHostSelectionLen(void) { Backdoor_proto bp; bp.in.cx.halfs.low = BDOOR_CMD_GETSELLENGTH; Backdoor(&bp); return bp.out.ax.word; }
void CopyPaste_SetNextPiece(uint32 data) // IN { Backdoor_proto bp; bp.in.cx.halfs.low = BDOOR_CMD_SETNEXTPIECE; bp.in.size = data; Backdoor(&bp); }
void CopyPaste_SetSelLength(uint32 length) // IN { Backdoor_proto bp; bp.in.cx.halfs.low = BDOOR_CMD_SETSELLENGTH; bp.in.size = length; Backdoor(&bp); }
static int StatProcessorSpeed(void) { int32 speed; Backdoor_proto bp; bp.in.cx.halfs.low = BDOOR_CMD_GETMHZ; Backdoor(&bp); speed = bp.out.ax.word; if (speed <= 0) { ToolsCmd_PrintErr("%s", SU_(stat.getspeed.failed, "Unable to get processor speed.\n")); return EX_TEMPFAIL; } g_print(SU_(stat.processorSpeed.info, "%u MHz\n"), speed); return EXIT_SUCCESS; }