probe syscall.open { actualLength = strlen (filename); if (actualLength > 5 && actualLength < 15 && filename != "") { four = 4; five = 5; fifteen = 15; success = 1; expected_1_1 = sprintf ("%.1s", filename); testName = "%m default width and precision"; result = sprintf ("%m", $filename); if (result != expected_1_1) { printf ("Test %s failed\n", testName); success = 0; } expected_5_5 = sprintf ("%.5s", filename); testName = "%m static precision smaller than input"; result = sprintf ("%.5m", $filename); if (result != expected_5_5) { printf ("Test %s failed\n", testName); success = 0; } testName = "%m dynamic precision smaller than input"; result = sprintf ("%.*m", five, $filename); if (result != expected_5_5) { printf ("Test %s failed\n", testName); success = 0; } testName = "%m dynamic precision equal to input"; expected_actual_actual = filename; result = sprintf ("%.*m", actualLength, $filename); if (result != expected_actual_actual) { printf ("Test %s failed\n", testName); success = 0; } expected_5_1 = sprintf (" %.1s", filename); testName = "%m static width default precision"; result = sprintf ("%5m", $filename); if (result != expected_5_1) { printf ("Test %s failed\n", testName); success = 0; } testName = "%m dynamic width default precision"; result = sprintf ("%*m", five, $filename); if (result != expected_5_1) { printf ("Test %s failed\n", testName); success = 0; } expected_4_5 = expected_5_5; testName = "%m static width smaller than static precision"; result = sprintf ("%4.5m", $filename); if (result != expected_4_5) { printf ("Test %s failed\n", testName); success = 0; } expected_15_5 = sprintf (" %.5s", filename); testName = "%m static width larger than static precision"; result = sprintf ("%15.5m", $filename); if (result != expected_15_5) { printf ("Test %s failed\n", testName); success = 0; } testName = "%m dynamic width smaller than static precision"; result = sprintf ("%*.5m", four, $filename); if (result != expected_4_5) { printf ("Test %s failed\n", testName); success = 0; } testName = "%m dynamic width larger than static precision"; result = sprintf ("%*.5m", fifteen, $filename); if (result != expected_15_5) { printf ("Test %s failed\n", testName); success = 0; } expected_4_actual = expected_actual_actual; testName = "%m static width smaller than dynamic precision"; result = sprintf ("%4.*m", actualLength, $filename); if (result != expected_4_actual) { printf ("Test %s failed\n", testName); success = 0; } expected_15_actual = sprintf ("%15s", filename); testName = "%m static width larger than dynamic precision"; result = sprintf ("%15.*m", actualLength, $filename); if (result != expected_15_actual) { printf ("Test %s failed\n", testName); success = 0; } testName = "%m dynamic width smaller than dynamic precision"; result = sprintf ("%*.*m", four, actualLength, $filename); if (result != expected_4_actual) { printf ("Test %s failed\n", testName); success = 0; } testName = "%m dynamic width larger than dynamic precision"; result = sprintf ("%*.*m", fifteen, actualLength, $filename); if (result != expected_15_actual) { printf ("Test %s failed\n", testName); success = 0; } expected_16_actual = sprintf (" %02x%02x%02x%02x%02x%02x", stringat(filename, 0), stringat(filename, 1), stringat(filename, 2), stringat(filename, 3), stringat(filename, 4), stringat(filename, 5)); testName = "%M dynamic width larger than dynamic precision"; result = sprintf ("%*.*M", 14, 6, $filename); if (result != expected_16_actual) { printf ("Test %s failed\n", testName); success = 0; } if (success) print ("Test passed\n"); exit(); } }