-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 22.10.2012 4:38, Rocky Bernstein wrote:
> On Sat, Sep 15, 2012 at 12:45 AM, LRN wrote:
>> 
>> Here are some patches for W32 version of libcdio, my test
>> results and observations.
>> 
>> 0002-use-sleep-compatible-to.mingw32.patch - there's no sleep()
>> on W32, but MinGW provides usleep.
>> 
>> 0004-disable-realpath-test-on.mingw32.patch - cdio_realpath() 
>> falls back to a simple strdup() on W32, so there's no sense in 
>> testing it (and we have no symlink() anyway).
>> 
>> 0006-fix-differences-in-_img_private_t-definition.all.patch - 
>> stdbool REDEFINES (!) "bool" to be _Bool, not int. Therefore all 
>> files that define something with "bool" type have to include 
>> stdbool.h, otherwise different source files will have different 
>> sizes for some structures.
>> 
>> 0007-fix-struct-packing-on-latest.mingw32.patch - as of gcc-4.7.0
>>  -mms-bitfields is enabled by default. Problem is, when it is 
>> enabled, gcc struct member packing attributes have no effect. 
>> Pragma pack has to be used to pack structures. This patch makes 
>> sure that on W32 structures are packed (requires configuring with
>>  CFLAGS=-std=iso9899:1999).
>> 
>> The output of `make check -k' is attached. As you can see, my 
>> patches did not quite fix the packing issue, so you might want
>> to look into that.
>> 
>> Lots of mmc errors, DeviceIoControl() simply returns 0 and sets 
>> error to 87. No idea why.
>> 
>> The tests that fail to find files might be failing because i'm 
>> building OOTSD.
>> 
>> Note that i'm running W7, and thus have no ASPI driver (AFAIK 
>> there are no free ASPI drivers).
>> 
> 
> In compiling for the next release cygwin compilation was broken. 
> I've redone *configure *to explicitly look for Windows header
> files *ntddcdrm.h* *ddk/scsi.h *and so o.
> *lib/driver/MSWindows/win32_ioctl.c *now includes based on these
> header defines tested in configure rather than assume __MINGW64__
> works has or doesn't have some particular set of headers
> 
> In short, please check to see that things still work in your 
> environment(s). Thanks.
> 

Tried 0.90 release.
Compiles out of the box ok.
Testuite runs OK OOTSD, all tests pass, except for testisocd.
3 tests were skipped:

testgetdevices test skipped until drive recording testing issues resolved
SKIP: testgetdevices.exe

- -- Unable find or access a CD-ROM drive with an ISO-9660 filesystem.
SKIP: testisocd.exe

SKIP: check_cue.sh


mmc3 passed, but printed some warnings.


The crash is, i think, due to run_mmc_cmd_win32ioctl(). Again.
See, it has this stack-allocated
  SCSI_PASS_THROUGH_WITH_BUFFERS sptwb;
structure, its size is 592 (it has a 512-bytes buffer in it).

Then you do:
if (SCSI_MMC_DATA_WRITE == e_direction) memcpy(&sptwb.DataBuf, p_buf,
i_buf);
Which is alarming, since there is no guarantee (AFAICS) that i_buf
does not exceed 512.

Then you do:
  sptwb.Spt.DataTransferLength= i_buf;
even though sptwb.DataBuf is only 512 bytes, while i_buf can be longer.

Then you calculate length as:
  length = offsetof(SCSI_PASS_THROUGH_WITH_BUFFERS, DataBuf) +
    sptwb.Spt.DataTransferLength;

which assumes that sptwb is followed by a
DataTransferLength-bytes-long buffer, even though it's only 512 bytes
long.

And finally:

  b_success = DeviceIoControl(p_env->h_device_handle,
                              IOCTL_SCSI_PASS_THROUGH,
                              (void *)&sptwb,
                              sizeof(SCSI_PASS_THROUGH),
                              &sptwb,
                              length,
                              &dw_bytes_returned,
                              NULL);

which writes back "length" bytes into &sptwb, corrupting the stack.


Test log (without USE_PASSTHROUGH_DIRECT) is attached.


Tried rebuilding with CPPFLAGS="-DUSE_PASSTHROUGH_DIRECT=1".
testisocd did not crash, and passed, but instead mmc_read failed:
Error: Sense key should be 5, got 0
FAIL: mmc_read.exe



Also, suggestion:
in default_cdio_log_handler() use this code:

#include <windows.h>
DebugBreak ();
ExitProcess (3);

instead of
abort ();

The reason for this is that abort() in MS C Runtime library simply
prints this:

This application has requested the Runtime to terminate it in an
unusual way.
Please contact the application's support team for more information.

to stderr, then calls raise(SIGABRT), which causes the process to
terminate abnormally (exit code 3), without flushing, closing, or
doing any cleanups.

The problem in all that is that gdb is not able to catch SIGABRT on
W32. Thus if you are debugging a process, and the process calls
abort(), it will die right under you, never giving you a chance to see
or debug the place where problem happened.

Thus i prefer to call DebugBreak(), which throws and exception that
gdb (or any debugger) can catch. If there's no debugger attached,
exception will go unhandled, crashing the process normally.

ExitProcess() is there to ensure that the process won't continue after
DebugBreak () if debugger is present (or exception was handled somehow).

If you don't like the idea of always using DebugBreak() (don't know
why anyone wouldn't like it, probably a religious thing...), then call
IsDebuggerPresent() first, to determine whether the process is being
debugger, and only call DebugBreak() if it is. Otherwise call abort().
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (MingW32)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQEcBAEBAgAGBQJQ/CCvAAoJEOs4Jb6SI2Cw2JsH/R9Zby4zR0iUA1vxS4krpl0I
2n/QwaBNBhj6n0pUkwcxOUqToV/RvyE3WWwyUh+DPRCF/h7HfL8uaBbwJFJ97W42
Dsu0gIWIbfz3IZPc//IG3QCnwJY8E9w6MgM2sXynVjaFKTebZbesB+gaEKGj8XC6
+PQ01qfBBZ2Yd1XGl1HM3dqcdfZIfpD5cFgXVXwbwpVb8XQAuP5ONpZybcJC8560
/emLo1XhrPsRLlwkMjqg7+rzWJCQFOjhXNgkH+dvgXHul3it26jndgMqM0BncieI
DxRF1RN/zZ/jBpg8CjGZVCinHeWX86dRJHg43R2RrFGJ7SZFDwwL+eCrNN2U0WE=
=gfY8
-----END PGP SIGNATURE-----
make[3]: Entering directory `/src/mingw/libcdio-0.90-1/bld/test/driver'
PASS: abs_path.exe
PASS: bincue.exe
PASS: cdda.exe
++ WARN: 
F:/sbuild.14/src/mingw/libcdio-0.90-1/libcdio-0.90/test/data/cdtext.toc line 
47: SILENCE not fully implimented
++ WARN: F:/sbuild.14/src/mingw/libcdio-0.90-1/libcdio-0.90/test/data/t1.toc 
line 5: SILENCE not fully implimented
++ WARN: number of minutes (180) truncated to 99.
++ WARN: F:/sbuild.14/src/mingw/libcdio-0.90-1/libcdio-0.90/test/data/data1.toc 
line 7: SILENCE not fully implimented
++ WARN: F:/sbuild.14/src/mingw/libcdio-0.90-1/libcdio-0.90/test/data/data2.toc 
line 8: unimplimented keyword: ZERO
++ WARN: could not retrieve file info for `foo.bin': No such file or directory
PASS: cdrdao.exe
SKIP: freebsd.exe
SKIP: gnu_linux.exe
PASS: mmc_read.exe
-- Warning: test_rwr_mode_page() had minor failure.
-- test_rwr_mode_page: Cannot set mode page 05h.
PASS: mmc_write.exe
PASS: nrg.exe
SKIP: osx.exe
-- Temp directory is C:/Users/LRN/AppData/Local/
symlink C:/Users/LRN/AppData/Local/Temp\syml4 gives weird return 1
PASS: realpath.exe
SKIP: solaris.exe
++ WARN: Unable to load ASPI DLL
   INFO: Error: file MSWindows/win32_ioctl.c: line 618 (run_mmc_cmd_win32ioctl)
        The handle is invalid.



   INFO: MMC command code: 0x4a

PASS: win32.exe
======================
All 9 tests passed
(4 tests were not run)
======================
make[3]: Leaving directory `/src/mingw/libcdio-0.90-1/bld/test/driver'
make[3]: Entering directory `/src/mingw/libcdio-0.90-1/bld/test'
-- checking sizeof (msf_t) ...ok!
-- checking sizeof (iso_volume_descriptor_t) ...ok!
-- checking sizeof (iso9660_pvd_t) ...ok!
-- checking sizeof (iso_path_table_t) ...ok!
-- checking sizeof (iso9660_dir_t) ...ok!
-- checking sizeof (iso9660_xa_t) ...ok!
PASS: check_sizeof.exe
Assertion failed: 0, file testassert.c, line 30

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
XFAIL: testassert.exe
testgetdevices test skipped until drive recording testing issues resolved
SKIP: testgetdevices.exe
--   0 1 2 3 4 5 6 7 8 9 a b c d e f | 0 1 2 3 4 5 6 7 8 9 a b c d e f
-- 0        0   P                     |       0   P                    
-- 1        1 A Q                     |     ! 1 A Q                    
-- 2        2 B R                     |     " 2 B R                    
-- 3        3 C S                     |       3 C S                    
-- 4        4 D T                     |       4 D T                    
-- 5        5 E U                     |     % 5 E U                    
-- 6        6 F V                     |     & 6 F V                    
-- 7        7 G W                     |     ' 7 G W                    
-- 8        8 H X                     |     ( 8 H X                    
-- 9        9 I Y                     |     ) 9 I Y                    
-- a          J Z                     |     * : J Z                    
-- b          K                       |     + ; K                      
-- c          L                       |     , < L                      
-- d          M                       |     - = M                      
-- e          N                       |     . > N                      
-- f          O _                     |     / ? O _                    
-- 
PASS: testischar.exe
++ WARN: number of minutes (255) truncated to 99.
++ WARN: number of minutes (255) truncated to 99.
FAIL: testisocd.exe
PASS: testisocd2.exe
++ WARN: string 'ABC!123' is getting truncated to 2 characters
PASS: testiso9660.exe
PASS: test_lib_driver_util.exe
-- F:/sbuild.14/src/mingw/libcdio-0.90-1/libcdio-0.90/test/data/t2.toc had 
expected pregap
-- F:/sbuild.14/src/mingw/libcdio-0.90-1/libcdio-0.90/test/data/t2.toc had 
expected pregap
-- F:/sbuild.14/src/mingw/libcdio-0.90-1/libcdio-0.90/test/data/p1.cue had 
expected pregap
-- F:/sbuild.14/src/mingw/libcdio-0.90-1/libcdio-0.90/test/data/p1.cue had 
expected pregap
-- F:/sbuild.14/src/mingw/libcdio-0.90-1/libcdio-0.90/test/data/p1.cue had 
expected pregap
-- F:/sbuild.14/src/mingw/libcdio-0.90-1/libcdio-0.90/test/data/p1.nrg had 
expected pregap
-- F:/sbuild.14/src/mingw/libcdio-0.90-1/libcdio-0.90/test/data/p1.nrg had 
expected pregap
PASS: testpregap.exe
-- ./check_nrg.sh: cd-info NRG test 1 ok.
-- Don't see NRG file 
/src/mingw/libcdio-0.90-1/libcdio-0.90/test/data/monvoisin.nrg. Test skipped.
PASS: check_nrg.sh
SKIP: check_cue.sh
-- ./check_cd_read.sh: cd-read CUE test CD-DA ok.
-- ./check_cd_read.sh: cd-read CUE test MODE1 ok.
PASS: check_cd_read.sh
-- Creating directory: C:/Users/LRN/AppData/Local/Temp/udf-8156
-- Extracting: C:/Users/LRN/AppData/Local/Temp/udf-8156/
-- Extracting: C:/Users/LRN/AppData/Local/Temp/udf-8156/COPYING
-- Extracting: C:/Users/LRN/AppData/Local/Temp/udf-8156/README
Volume id: CDROM
Volume set id: CDROM
Partition number: 0
-- ./check_udf.sh: /src/mingw/libcdio-0.90-1/bld/example/extract 
/src/mingw/libcdio-0.90-1/libcdio-0.90/test/data/test-udf1.iso /tmp/udf-8156 ok.
PASS: check_udf.sh
-- ./check_iso.sh: iso-info basic test ok.
-- ./check_iso.sh: iso-read basic test ok.
-- ./check_iso.sh: iso-info Joliet test ok.
-- ./check_iso.sh: iso-info --no-joliet test ok.
PASS: check_iso.sh
-- Sorry, could not find an ISO 9660 image from 
F:/sbuild.14/src/mingw/libcdio-0.90-1/libcdio-0.90/test/data/cdda.bin
-- Sorry, could not find an ISO 9660 image from 
F:/sbuild.14/src/mingw/libcdio-0.90-1/libcdio-0.90/test/data/cdtext.bin
-- /.
-- /..
-- /copying
-- /doc
-- Sorry, could not find an ISO 9660 image from 
F:/sbuild.14/src/mingw/libcdio-0.90-1/libcdio-0.90/test/data/p1.bin
-- /.
-- /..
-- /copy
-- /copy2
-- /copying
-- /fd0
-- /tmp
-- /zero
-- /.
-- /..
-- /copying
-- /.
-- /..
-- /libcdio
-- /.
-- /..
-- /copying
-- /readme
-- Sorry, could not find an ISO 9660 image from 
F:/sbuild.14/src/mingw/libcdio-0.90-1/libcdio-0.90/test/data/p1.nrg
-- /.
-- /..
-- /ext
-- /mpeg2
-- /segment
-- /svcd
PASS: check_fuzzyiso.sh
-- ./check_opts.sh: cd-info option test -T ok.
-- ./check_opts.sh: cd-info option test --no-tracks ok.
-- ./check_opts.sh: cd-info option test -A ok.
-- ./check_opts.sh: cd-info option test --no-analyze ok.
-- ./check_opts.sh: cd-info option test -I ok.
-- ./check_opts.sh: cd-info option test --no-ioctl ok.
-- ./check_opts.sh: cd-info option test -q ok.
-- ./check_opts.sh: cd-info option test --quiet ok.
-- ./check_opts.sh: Legal header of ../src/cd-info.exe 
/src/mingw/libcdio-0.90-1/libcdio-0.90/test/data/isofs-m1.cue ok.
PASS: check_opts.sh
=============================================================
1 of 14 tests failed
(2 tests were not run)
Please report to https://savannah.gnu.org/bugs/?group=libcdio
=============================================================
make[3]: Entering directory `/src/mingw/libcdio-0.90-1/bld/example'
-- Discmode: CD-DA

-- CD-Text available in: English German 
-- German selected.
-- CD-Text for Disc:
--      TITLE: Freudvolle Nächte
--      PERFORMER: Vereinigtes Katzenorchester
--      SONGWRITER: Verschiedene Liedschreiber
--      COMPOSER: Verschiedene Komponisten
--      MESSAGE: FГјr alle unsere Fans
--      ARRANGER: Tom Cat
--      UPC_EAN: 1234567890123
--      GENRE: Katzenhafte Klassik
--      DISC_ID: 1234567890
-- CD-Text for Track 1:
--      TITLE: Lied der Freude
--      PERFORMER: Felix und Die Schnurrer
--      SONGWRITER: Friedrich Schiller
--      COMPOSER: Ludwig van Beethoven
--      MESSAGE: Fritz und Louie waren einmal Punks
--      ARRANGER: Tom Cat
--      ISRC: XYBLG1101234
-- CD-Text for Track 2:
--      TITLE: Rubbeldiekatz
--      PERFORMER: Katzengang SchГ¶nheiten
--      SONGWRITER: Mutter Gans
--      COMPOSER: unbekannt
--      MESSAGE: Rupft die Gans
--      ISRC: XYBLG1100005
-- CD-Text for Track 3:
--      TITLE: Mie auu
--      PERFORMER: Mia Kätzchen
--      SONGWRITER: Mia Kätzchen
--      COMPOSER: Mia Kätzchen
--      ARRANGER: Mia Kätzchen
--      ISRC: XYBLG1100006
++ WARN: CD-Text size is too small or not a multiple of pack size
-- Discmode: DVD-ROM

-- No CD-Text found on Disc.
PASS: cdtext.exe
-- The driver selected is WIN32
-- The default device for this driver is \\.\G:
-- Hardware                    : CD-ROM or DVD
-- Can eject                   : No
-- Can close tray              : No
-- Can disable manual eject    : No
-- Can select juke-box disc    : No

-- Can set drive speed         : No
-- Can detect if CD changed    : No
-- Can read multiple sessions  : No
-- Can hard reset device       : No

-- Reading....
--  Can play audio            : No
--  Can read  CD-R            : No
--  Can read  CD-RW           : No
--  Can read  DVD-ROM         : No

-- Writing....
--  Can write CD-RW           : No
--  Can write DVD-R           : No
--  Can write DVD-RAM         : No

-- We don't have: AIX SCSI driver
-- We don't have: BSDI ATAPI and SCSI driver
-- We don't have: FreeBSD driver
-- We don't have: NetBSD driver
-- We don't have: GNU/Linux ioctl and MMC driver
-- We don't have: Solaris ATAPI and SCSI driver
-- We don't have: IBM OS/2 driver
-- We don't have: Apple Darwin OS X driver
-- We have: MS Windows ASPI and ioctl driver
-- We have: cdrdao (TOC) disk image driver
-- We have: bin/cuesheet disk image driver
-- We have: Nero NRG disk image driver
PASS: device.exe
-- Drive \\.\G:
-- Drive \\.\O:
-----
-- -- All CD-ROM drives (again)...
-- Drive \\.\G:
-- Drive \\.\O:
-----
-- -- CD-ROM drives with a CD-DA loaded......
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
-----
-- -- CD-ROM drives with some sort of ISO 9660 filesystem......
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
-- Drive \\.\G:
-----
-- -- (S)VCD drives......
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
-----
PASS: drives.exe
-- Vendor: XYDKF   
-- Model: Z0PMZS5YV       
-- Revision: 1.04
-- Disc is not erasable.
-- disc type: profile is The Logical Unit does not conform to any Profile 
(0xFFFF)
PASS: mmc1.exe
-- Didn't get all feature codes.
-- CD-ROM is an ATAPI interface.
PASS: mmc2.exe
-- Mode sense 6 information for \\.\G::
--      Lock state is unlocked.
--      PREVENT/ALLOW jumper is not present.
--      Loading mechanism type  is 0: caddy type loading mechanism.
--      Maximum read speed is 0 K bytes/sec (about 0X)
--      Number of Volume levels is 0
--      Buffers size for data is 0 KB
--      Current read speed is 0 KB
--      Maximum write speed is 0 KB
--      Current write speed is 0 KB
-- Mode sense 10 information for \\.\G::
--      Lock state is unlocked.
--      PREVENT/ALLOW jumper is not present.
--      Loading mechanism type  is 0: caddy type loading mechanism.
--      Maximum read speed is 0 K bytes/sec (about 0X)
--      Number of Volume levels is 0
--      Buffers size for data is 0 KB
--      Current read speed is 0 KB
--      Maximum write speed is 0 KB
--      Current write speed is 0 KB
PASS: mmc2a.exe
-- CD-ROM drive \\.\G: is closed.
-- CD-ROM drive \\.\G: media not changed since last test.
++ WARN: mciSendCommand() error: The specified file cannot be played on the 
specified MCI device.  The file may be corrupt, not in the correct format, or 
no file handler available for this format.
-- CD-ROM drive \\.\G: is closed.
-- CD-ROM drive \\.\G: media not changed since last test.
++ WARN: mciSendCommand() error: The specified file cannot be played on the 
specified MCI device.  The file may be corrupt, not in the correct format, or 
no file handler available for this format.
PASS: mmc3.exe
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
cdio 3 message: number of minutes (255) truncated to 99.
CD-ROM with ISO 9660 filesystem and joliet extension level 3
ISO 9660: 7890092 blocks, label `CALL OF DUTY BLACK OPS 2        '

PASS: sample4.exe
==================
All 8 tests passed
==================
make[3]: Leaving directory `/src/mingw/libcdio-0.90-1/bld/example'

Reply via email to