//#include <sys/time.h> void PlainConfigFile::write() const { kdebugf(); /* struct timeval t1,t2; gettimeofday(&t1, NULL); for(int j=0; j<100; ++j) {*/ QFile file(filename); QString line; QStringList out; QString format1("[%1]\n"); QString format2("%1=%2\n"); if (file.open(QIODevice::WriteOnly | QIODevice::Truncate)) { kdebugm(KDEBUG_INFO, "file opened '%s'\n", qPrintable(file.fileName())); QTextStream stream(&file); stream.setCodec(codec_latin2); foreach(const QString &key, groups.keys()) { // kdebugm(KDEBUG_DUMP, ">> %s\n", (i.key())); out.append(format1.arg(key)); foreach(const QString &dataKey, groups[key].keys()) { QString q = groups[key][dataKey]; out.append(format2.arg(dataKey).arg(q.replace('\n', "\\n"))); // kdebugm(KDEBUG_DUMP, ">>>>> %s %s\n", qPrintable(key()), qPrintable(q)); } out.append("\n"); } stream << out.join(QString::null); file.close(); }
main () { printf (MSG ("\nFORMAT 4K %s %s\n", "\nРАЗМЕТКА 4K %s %s\n"), BOOTVERSION, MSG (LCOPYRIGHT, RCOPYRIGHT)); printf (MSG ("\nUsing this program you may OVERWRITE information on your hard disks.\n", "\nПри работе с этой программой Вы можете ЗАТЕРЕТЬ информацию на дисках.\n")); printf (MSG ("\nIt is strongly recommended to TURN unnecessary disks 'READ-ONLY'.\n", "\nНастоятельно рекомендуется ЗАКРЫТЬ ненужные дискм на ЗАПИСЬ.\n")); printf (MSG ("Do you want to continue", "Продолжать")); if (yes () != 1) return; unit = getunit (); nbad = 0; printf (MSG ("\nFormat unit %d", "\nФорматировать устройство %d"), unit); if (yes () != 1) return; /* инициализация переменных и массивов разметки */ init (unit); printf (MSG ("\nINITIAL FORMATTING\n", "\nПЕРВИЧНАЯ РАЗМЕТКА\n")); if (! format1 ()) return; if (nbad) { printf (MSG ("\nBAD TRACKS REMAPPING\n", "\nДЕФЕКТАЦИЯ\n")); if (! format2 ()) return; } printf (MSG ("\nFormat completed.\n", "\nФорматирование закончено.\n")); }
/* Test case for api isValid */ void tst_QVideoSurfaceFormat::isValid() { /* When both pixel format and framesize is not valid */ QVideoSurfaceFormat format; QVERIFY(!format.isValid()); /* When framesize is valid and pixel format is not valid */ format.setFrameSize(64,64); QVERIFY(format.frameSize() == QSize(64,64)); QVERIFY(!format.pixelFormat()); QVERIFY(!format.isValid()); /* When both the pixel format and framesize is valid. */ QVideoSurfaceFormat format1(QSize(32, 32), QVideoFrame::Format_AYUV444); QVERIFY(format1.isValid()); /* When pixel format is valid and frame size is not valid */ format1.setFrameSize(-1,-1); QVERIFY(!format1.frameSize().isValid()); QVERIFY(!format1.isValid()); }
void tst_QVideoSurfaceFormat::compare() { QVideoSurfaceFormat format1( QSize(16, 16), QVideoFrame::Format_RGB32, QAbstractVideoBuffer::GLTextureHandle); QVideoSurfaceFormat format2( QSize(16, 16), QVideoFrame::Format_RGB32, QAbstractVideoBuffer::GLTextureHandle); QVideoSurfaceFormat format3( QSize(32, 32), QVideoFrame::Format_YUV444, QAbstractVideoBuffer::GLTextureHandle); QVideoSurfaceFormat format4( QSize(16, 16), QVideoFrame::Format_RGB32, QAbstractVideoBuffer::UserHandle); QCOMPARE(format1 == format2, true); QCOMPARE(format1 != format2, false); QCOMPARE(format1 == format3, false); QCOMPARE(format1 != format3, true); QCOMPARE(format1 == format4, false); QCOMPARE(format1 != format4, true); format2.setFrameSize(1024, 768); // Not equal, frame size differs. QCOMPARE(format1 == format2, false); QCOMPARE(format1 != format2, true); format1.setFrameSize(1024, 768); // Equal. QCOMPARE(format1 == format2, true); QCOMPARE(format1 != format2, false); format1.setViewport(QRect(0, 0, 800, 600)); format2.setViewport(QRect(112, 84, 800, 600)); // Not equal, viewports differ. QCOMPARE(format1 == format2, false); QCOMPARE(format1 != format2, true); format1.setViewport(QRect(112, 84, 800, 600)); // Equal. QCOMPARE(format1 == format2, true); QCOMPARE(format1 != format2, false); format2.setScanLineDirection(QVideoSurfaceFormat::BottomToTop); // Not equal scan line direction differs. QCOMPARE(format1 == format2, false); QCOMPARE(format1 != format2, true); format1.setScanLineDirection(QVideoSurfaceFormat::BottomToTop); // Equal. QCOMPARE(format1 == format2, true); QCOMPARE(format1 != format2, false); format1.setFrameRate(7.5); // Not equal frame rate differs. QCOMPARE(format1 == format2, false); QCOMPARE(format1 != format2, true); format2.setFrameRate(qreal(7.50001)); // Equal. QCOMPARE(format1 == format2, true); QCOMPARE(format1 != format2, false); format2.setPixelAspectRatio(4, 3); // Not equal pixel aspect ratio differs. QCOMPARE(format1 == format2, false); QCOMPARE(format1 != format2, true); format1.setPixelAspectRatio(QSize(4, 3)); // Equal. QCOMPARE(format1 == format2, true); QCOMPARE(format1 != format2, false); format2.setYCbCrColorSpace(QVideoSurfaceFormat::YCbCr_xvYCC601); // Not equal yuv color space differs. QCOMPARE(format1 == format2, false); QCOMPARE(format1 != format2, true); format1.setYCbCrColorSpace(QVideoSurfaceFormat::YCbCr_xvYCC601); // Equal. QCOMPARE(format1 == format2, true); QCOMPARE(format1 != format2, false); format1.setProperty("integer", 12); // Not equal, property mismatch. QCOMPARE(format1 == format2, false); QCOMPARE(format1 != format2, true); format2.setProperty("integer", 45); // Not equal, integer differs. QCOMPARE(format1 == format2, false); QCOMPARE(format1 != format2, true); format2.setProperty("integer", 12); // Equal. QCOMPARE(format1 == format2, true); QCOMPARE(format1 != format2, false); format1.setProperty("string", QString::fromLatin1("Hello")); format2.setProperty("size", QSize(12, 54)); // Not equal, property mismatch. QCOMPARE(format1 == format2, false); QCOMPARE(format1 != format2, true); format2.setProperty("string", QString::fromLatin1("Hello")); format1.setProperty("size", QSize(12, 54)); // Equal. QCOMPARE(format1 == format2, true); QCOMPARE(format1 != format2, false); format1.setProperty("string", QVariant()); // Not equal, property mismatch. QCOMPARE(format1 == format2, false); QCOMPARE(format1 != format2, true); }
/* * Parses a format string. */ void output(const struct stat *st, const char *file, const char *statfmt, int fn, int nonl) { int flags, size, prec, ofmt, hilo, what; char buf[PATH_MAX + 4 + 1]; const char *subfmt; int nl, t, i; nl = 1; while (*statfmt != '\0') { /* * Non-format characters go straight out. */ if (*statfmt != FMT_MAGIC) { addchar(stdout, *statfmt, &nl); statfmt++; continue; } /* * The current format "substring" starts here, * and then we skip the magic. */ subfmt = statfmt; statfmt++; /* * Some simple one-character "formats". */ switch (*statfmt) { case SIMPLE_NEWLINE: addchar(stdout, '\n', &nl); statfmt++; continue; case SIMPLE_TAB: addchar(stdout, '\t', &nl); statfmt++; continue; case SIMPLE_PERCENT: addchar(stdout, '%', &nl); statfmt++; continue; case SIMPLE_NUMBER: { char num[12], *p; snprintf(num, sizeof(num), "%d", fn); for (p = &num[0]; *p; p++) addchar(stdout, *p, &nl); statfmt++; continue; } } /* * This must be an actual format string. Format strings are * similar to printf(3) formats up to a point, and are of * the form: * * % required start of format * [-# +0] opt. format characters * size opt. field width * . opt. decimal separator, followed by * prec opt. precision * fmt opt. output specifier (string, numeric, etc.) * sub opt. sub field specifier (high, middle, low) * datum required field specifier (size, mode, etc) * * Only the % and the datum selector are required. All data * have reasonable default output forms. The "sub" specifier * only applies to certain data (mode, dev, rdev, filetype). * The symlink output defaults to STRING, yet will only emit * the leading " -> " if STRING is explicitly specified. The * sizerdev datum will generate rdev output for character or * block devices, and size output for all others. */ flags = 0; do { if (*statfmt == FMT_POUND) flags |= FLAG_POUND; else if (*statfmt == FMT_SPACE) flags |= FLAG_SPACE; else if (*statfmt == FMT_PLUS) flags |= FLAG_PLUS; else if (*statfmt == FMT_ZERO) flags |= FLAG_ZERO; else if (*statfmt == FMT_MINUS) flags |= FLAG_MINUS; else break; statfmt++; } while (1/*CONSTCOND*/); size = -1; if (isdigit((unsigned)*statfmt)) { size = 0; while (isdigit((unsigned)*statfmt)) { size = (size * 10) + (*statfmt - '0'); statfmt++; if (size < 0) goto badfmt; } } prec = -1; if (*statfmt == FMT_DOT) { statfmt++; prec = 0; while (isdigit((unsigned)*statfmt)) { prec = (prec * 10) + (*statfmt - '0'); statfmt++; if (prec < 0) goto badfmt; } } #define fmtcase(x, y) case (y): (x) = (y); statfmt++; break #define fmtcasef(x, y, z) case (y): (x) = (z); statfmt++; break switch (*statfmt) { fmtcasef(ofmt, FMT_DECIMAL, FMTF_DECIMAL); fmtcasef(ofmt, FMT_OCTAL, FMTF_OCTAL); fmtcasef(ofmt, FMT_UNSIGNED, FMTF_UNSIGNED); fmtcasef(ofmt, FMT_HEX, FMTF_HEX); fmtcasef(ofmt, FMT_FLOAT, FMTF_FLOAT); fmtcasef(ofmt, FMT_STRING, FMTF_STRING); default: ofmt = 0; break; } switch (*statfmt) { fmtcase(hilo, HIGH_PIECE); fmtcase(hilo, MIDDLE_PIECE); fmtcase(hilo, LOW_PIECE); default: hilo = 0; break; } switch (*statfmt) { fmtcase(what, SHOW_realpath); fmtcase(what, SHOW_st_dev); fmtcase(what, SHOW_st_ino); fmtcase(what, SHOW_st_mode); fmtcase(what, SHOW_st_nlink); fmtcase(what, SHOW_st_uid); fmtcase(what, SHOW_st_gid); fmtcase(what, SHOW_st_rdev); fmtcase(what, SHOW_st_atime); fmtcase(what, SHOW_st_mtime); fmtcase(what, SHOW_st_ctime); fmtcase(what, SHOW_st_btime); fmtcase(what, SHOW_st_size); fmtcase(what, SHOW_st_blocks); fmtcase(what, SHOW_st_blksize); fmtcase(what, SHOW_st_flags); fmtcase(what, SHOW_st_gen); fmtcase(what, SHOW_symlink); fmtcase(what, SHOW_filetype); fmtcase(what, SHOW_filename); fmtcase(what, SHOW_sizerdev); default: goto badfmt; } #undef fmtcasef #undef fmtcase t = format1(st, file, subfmt, statfmt - subfmt, buf, sizeof(buf), flags, size, prec, ofmt, hilo, what); for (i = 0; i < t && i < (int)(sizeof(buf) - 1); i++) addchar(stdout, buf[i], &nl); continue; badfmt: errx(1, "%.*s: bad format", (int)(statfmt - subfmt + 1), subfmt); } if (!nl && !nonl) (void)fputc('\n', stdout); (void)fflush(stdout); }
bool ValueFormatTest::InitFromString() { WgValueFormat format1("1000"); TEST_ASSERT( format1.decimals == 0 ); TEST_ASSERT( format1.grouping == 0 ); TEST_ASSERT( format1.prefix[0] == 0 ); TEST_ASSERT( format1.suffix[0] == 0 ); WgValueFormat format2("1;000"); TEST_ASSERT( format2.decimals == 0 ); TEST_ASSERT( format2.grouping == 3 ); TEST_ASSERT( format2.separator == ';' ); TEST_ASSERT( format2.prefix[0] == 0 ); TEST_ASSERT( format2.suffix[0] == 0 ); WgValueFormat format3("1;000:0"); TEST_ASSERT( format3.decimals == 1 ); TEST_ASSERT( format3.grouping == 3 ); TEST_ASSERT( format3.separator == ';' ); TEST_ASSERT( format3.period == ':' ); TEST_ASSERT( format3.prefix[0] == 0 ); TEST_ASSERT( format3.suffix[0] == 0 ); TEST_ASSERT( format3.bForceDecimals == true ); WgValueFormat format4("1;00:000"); TEST_ASSERT( format4.decimals == 3 ); TEST_ASSERT( format4.grouping == 2 ); TEST_ASSERT( format4.separator == ';' ); TEST_ASSERT( format4.period == ':' ); TEST_ASSERT( format4.prefix[0] == 0 ); TEST_ASSERT( format4.suffix[0] == 0 ); TEST_ASSERT( format4.bForceDecimals == true ); WgValueFormat format5("100:000"); TEST_ASSERT( format5.decimals == 3 ); TEST_ASSERT( format5.grouping == 0 ); TEST_ASSERT( format5.period == ':' ); TEST_ASSERT( format5.prefix[0] == 0 ); TEST_ASSERT( format5.suffix[0] == 0 ); TEST_ASSERT( format5.bForceDecimals == true ); std::string a = std::string("$\xc2\xa3\xe2\x82\xac") + std::string("1;000000:0000 USD"); // string is '$£€1;000000:0000 USD' WgValueFormat format6( a ); TEST_ASSERT( format6.decimals == 4 ); TEST_ASSERT( format6.grouping == 6 ); TEST_ASSERT( format6.separator == ';' ); TEST_ASSERT( format6.prefix[0] == '$' ); TEST_ASSERT( format6.prefix[1] == 0xa3 ); // pound sign TEST_ASSERT( format6.prefix[2] == 0x20ac ); // euro sign TEST_ASSERT( format6.prefix[3] == 0 ); TEST_ASSERT( format6.suffix[0] == ' ' ); TEST_ASSERT( format6.suffix[1] == 'U' ); TEST_ASSERT( format6.suffix[2] == 'S' ); TEST_ASSERT( format6.suffix[3] == 'D' ); TEST_ASSERT( format6.bForceDecimals == true ); return true; }