delorie.com/archives/browse.cgi | search |
X-Recipient: | archive-cygwin AT delorie DOT com |
X-Spam-Check-By: | sourceware.org |
From: | Barry Kelly <bkelly DOT ie AT gmail DOT com> |
To: | Cygwin Mailing List <cygwin AT cygwin DOT com> |
Subject: | PATCH: cygutils/cygstart - wait till task terminates (i.e. run in foreground) |
Date: | Mon, 11 Aug 2008 17:26:44 +0100 |
Message-ID: | <40q0a4d1qej604aerns94mr6562dr5tigg@4ax.com> |
X-Mailer: | Forte Agent 4.2/32.1117 |
MIME-Version: | 1.0 |
X-IsSubscribed: | yes |
Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm |
List-Id: | <cygwin.cygwin.com> |
List-Subscribe: | <mailto:cygwin-subscribe AT cygwin DOT com> |
List-Archive: | <http://sourceware.org/ml/cygwin/> |
List-Post: | <mailto:cygwin AT cygwin DOT com> |
List-Help: | <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs> |
Sender: | cygwin-owner AT cygwin DOT com |
Mail-Followup-To: | cygwin AT cygwin DOT com |
Delivered-To: | mailing list cygwin AT cygwin DOT com |
----=_42q0a4dsqt8oqqk7b48gpkninlklbaihf5.MFSBCHJLHS Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable I find cygstart useful generally, but ShellExecute/Ex has more options than cygstart exposes. In particular, I'd like to be able to write a script that starts an action and waits for it to complete, and then perform another action. This means that I don't want cygstart to return until the process it has started exits (modulo MDI etc). ShellExecuteEx can return the process handle, which can then be waited on. I've written a patch against cygutils-1.3.2-1 that implements this functionality via a new "-w | --wait" argument. I've attached the patch for review. Is there any other place I should be posting to submit this patch? -- Barry --=20 http://barrkel.blogspot.com/ ----=_42q0a4dsqt8oqqk7b48gpkninlklbaihf5.MFSBCHJLHS Content-Type: application/octet-stream; name=cygstart-1.3.2-1.bjk-wait.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=cygstart-1.3.2-1.bjk-wait.patch ZGlmZiAtciAtdTMgc3JjL2N5Z3N0YXJ0L2N5Z3N0YXJ0LmMgbmV3c3JjL2N5 Z3N0YXJ0L2N5Z3N0YXJ0LmMKLS0tIHNyYy9jeWdzdGFydC9jeWdzdGFydC5j CTIwMDYtMTItMTMgMDY6MjI6MzcuMDAwMDAwMDAwICswMDAwCisrKyBuZXdz cmMvY3lnc3RhcnQvY3lnc3RhcnQuYwkyMDA4LTA4LTEwIDIwOjI0OjEzLjcz OTM3NTAwMCArMDEwMApAQCAtNTQsMTAgKzU0LDE2IEBACiAvKiBUaGUgbmFt ZSB0aGlzIHByb2dyYW0gd2FzIHJ1biB3aXRoLiAqLwogc3RhdGljIGNoYXIg KnByb2dyYW1fbmFtZTsKIAordHlwZWRlZiBlbnVtIFN0YXJ0RmxhZ3Mgewor ICAgIFNGX05PTkUgPSAwLAorICAgIFNGX1ZFUkJPU0UgPSAxIDw8IDAsCisg ICAgU0ZfV0FJVCA9IDEgPDwgMSwKK30gU3RhcnRGbGFnczsKKwogc3RhdGlj IGludCBjeWdTdGFydChjb25zdCBjaGFyICphUGF0aCwgY29uc3QgY2hhciAq YWN0aW9uLCBjb25zdCBjaGFyICphcmdzLAotICAgICAgICAgICAgICAgICAg ICBjb25zdCBjaGFyICp3b3JrRGlyLCBpbnQgc2hvdywgaW50IHZlcmJvc2Up OworICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp3b3JrRGlyLCBp bnQgc2hvdywgU3RhcnRGbGFncyBzdGFydEZsYWdzKTsKIHN0YXRpYyBpbnQg d2luU3RhcnQoY29uc3QgY2hhciAqYVBhdGgsIGNvbnN0IGNoYXIgKmFjdGlv biwgY29uc3QgY2hhciAqYXJncywKLSAgICAgICAgICAgICAgICAgICAgY29u c3QgY2hhciAqd29ya0RpciwgaW50IHNob3csIGludCB2ZXJib3NlKTsKKyAg ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqd29ya0RpciwgaW50IHNo b3csIFN0YXJ0RmxhZ3Mgc3RhcnRGbGFncyk7CiBzdGF0aWMgY2hhciAqc3Rh cnRFcnJvcihpbnQgZXJyKTsKIHN0YXRpYyBjb25zdCBjaGFyICpnZXRWZXJz aW9uKHZvaWQpOwogc3RhdGljIHZvaWQgcHJpbnRUb3BEZXNjcmlwdGlvbihG SUxFICpmLCBjaGFyICpuYW1lKTsKQEAgLTgxLDcgKzg3LDcgQEAKICAgICBj aGFyICphcmdzID0gTlVMTDsKICAgICBjaGFyICp3b3JrRGlyID0gTlVMTDsK ICAgICBpbnQgc2hvdyA9IFNXX1NIT1dOT1JNQUw7Ci0gICAgaW50IHZlcmJv c2UgPSAwOworICAgIFN0YXJ0RmxhZ3Mgc3RhcnRGbGFncyA9IFNGX05PTkU7 CiAKICAgICAvKiBBY3Rpb24gb3B0aW9ucyAqLwogICAgIHN0cnVjdCBwb3B0 T3B0aW9uIGFjdGlvbk9wdGlvbnNUYWJsZVtdID0gewpAQCAtMTQ0LDYgKzE1 MCwxNCBAQAogICAgICAgICAgICJmb3IgdGhlIGZpcnN0IHRpbWUiLCBOVUxM fSwKICAgICAgICAgeyBOVUxMLCAnXDAnLCAwLCBOVUxMLCAwLCBOVUxMLCBO VUxMIH0KICAgICB9OworICAgIAorICAgIC8qIFN0YXJ0dXAgb3B0aW9ucyAq LworICAgIHN0cnVjdCBwb3B0T3B0aW9uIHN0YXJ0dXBPcHRpb25zVGFibGVb XSA9IHsKKyAgICAgICAgeyAid2FpdCIsICd3JywgUE9QVF9BUkdfTk9ORSwg TlVMTCwgJ3cnLAorICAgICAgICAgICJXYWl0cyB1bnRpbCB0aGUgc3RhcnRl ZCBhcHBsaWNhdGlvbiB0ZXJtaW5hdGVzIGJlZm9yZSBleGl0aW5nLiIsCisg ICAgICAgICAgTlVMTCB9LAorICAgICAgICB7IE5VTEwsICdcMCcsIDAsIE5V TEwsIDAsIE5VTEwsIE5VTEwgfQorICAgIH07CiAKICAgICAvKiBUcm91Ymxl c2hvb3Rpbmcgb3B0aW9ucyAqLwogICAgIHN0cnVjdCBwb3B0T3B0aW9uIHRy b3VibGVPcHRpb25zVGFibGVbXSA9IHsKQEAgLTE3NCw2ICsxODgsOCBAQAog ICAgICAgICAgICJEaXJlY3Rvcnkgb3B0aW9ucyIsIE5VTEwgfSwKICAgICAg ICAgeyBOVUxMLCAnXDAnLCBQT1BUX0FSR19JTkNMVURFX1RBQkxFLCBzaG93 T3B0aW9uc1RhYmxlLCAwLCBcCiAgICAgICAgICAgIlNob3cgb3B0aW9ucyIs IE5VTEwgfSwKKyAgICAgICAgeyBOVUxMLCAnXDAnLCBQT1BUX0FSR19JTkNM VURFX1RBQkxFLCBzdGFydHVwT3B0aW9uc1RhYmxlLCAwLAorICAgICAgICAg ICJTdGFydHVwIG9wdGlvbnMiLCBOVUxMIH0sCiAgICAgICAgIHsgTlVMTCwg J1wwJywgUE9QVF9BUkdfSU5DTFVERV9UQUJMRSwgdHJvdWJsZU9wdGlvbnNU YWJsZSwgMCwgXAogICAgICAgICAgICJUcm91Ymxlc2hvb3Rpbmcgb3B0aW9u cyIsIE5VTEwgfSwKICAgICAgICAgeyBOVUxMLCAnXDAnLCBQT1BUX0FSR19J TkNMVURFX1RBQkxFLCBoZWxwT3B0aW9uc1RhYmxlLCAwLCBcCkBAIC0yMjks NyArMjQ1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZnJlZSh3b3JrRGly KTsKICAgICAgICAgICAgICAgICByZXR1cm4oMCk7CiAgICAgICAgICAgICBj YXNlICdyJzoKLSAgICAgICAgICAgICAgICBjeWdTdGFydChNU0ROX1VSTCwg TlVMTCwgTlVMTCwgTlVMTCwgU1dfTk9STUFMLCB2ZXJib3NlKTsKKyAgICAg ICAgICAgICAgICBjeWdTdGFydChNU0ROX1VSTCwgTlVMTCwgTlVMTCwgTlVM TCwgU1dfTk9STUFMLCBzdGFydEZsYWdzKTsKICAgICAgICAgICAgICAgICBw b3B0RnJlZUNvbnRleHQob3B0Q29uKTsKICAgICAgICAgICAgICAgICBmcmVl KHByb2dyYW1fbmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFjdGlvbikK QEAgLTMyNSw5ICszNDEsMTQgQEAKICAgICAgICAgICAgICAgICBzaG93ID0g U1dfU0hPV05PUk1BTDsKICAgICAgICAgICAgICAgICBicmVhazsKIAorICAg ICAgICAgICAgLyogU3RhcnR1cCBvcHRpb25zICovCisgICAgICAgICAgICBj YXNlICd3JzoKKyAgICAgICAgICAgICAgICBzdGFydEZsYWdzIHw9IFNGX1dB SVQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgIC8q IFRyb3VibGVzaG9vdGluZyBvcHRpb25zICovCiAgICAgICAgICAgICBjYXNl ICdFJzoKLSAgICAgICAgICAgICAgICB2ZXJib3NlID0gMTsKKyAgICAgICAg ICAgICAgICBzdGFydEZsYWdzIHw9IFNGX1ZFUkJPU0U7CiAgICAgICAgICAg ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC0zNzYsNyArMzk3 LDcgQEAKICAgICB9CiAKICAgICAvKiBTdGFydCBpdCEgKi8KLSAgICByZXQg PSBjeWdTdGFydChmaWxlLCBhY3Rpb24sIGFyZ3MsIHdvcmtEaXIsIHNob3cs IHZlcmJvc2UpOworICAgIHJldCA9IGN5Z1N0YXJ0KGZpbGUsIGFjdGlvbiwg YXJncywgd29ya0Rpciwgc2hvdywgc3RhcnRGbGFncyk7CiAKICAgICBwb3B0 RnJlZUNvbnRleHQob3B0Q29uKTsKICAgICBmcmVlKHByb2dyYW1fbmFtZSk7 CkBAIC0zOTQsNyArNDE1LDcgQEAKIAogLyogU3RhcnQgYSBwcm9ncmFtLCBv ciBvcGVuIGEgZmlsZSBvciBVUkwsIHVzaW5nIEN5Z3dpbiBQT1NJWCBwYXRo cyAqLwogc3RhdGljIGludCBjeWdTdGFydChjb25zdCBjaGFyICphUGF0aCwg Y29uc3QgY2hhciAqYWN0aW9uLCBjb25zdCBjaGFyICphcmdzLAotICAgICAg ICAgICAgICAgICAgICBjb25zdCBjaGFyICp3b3JrRGlyLCBpbnQgc2hvdywg aW50IHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg KndvcmtEaXIsIGludCBzaG93LCBTdGFydEZsYWdzIHN0YXJ0RmxhZ3MpCiB7 CiAgICAgY2hhciB3aW5QYXRoW01BWF9QQVRIKzFdOwogICAgIGNoYXIgd2lu RGlyW01BWF9QQVRIKzFdOwpAQCAtNDA5LDMzICs0MzAsOTEgQEAKICAgICAv KiBDb252ZXJ0IHdvcmtpbmcgZGlyZWN0b3J5LCBpZiBhbnksIGZyb20gUE9T SVggdG8gV2luZG93cyAqLwogICAgIGlmICh3b3JrRGlyKSB7CiAgICAgICAg IGN5Z3dpbl9jb252X3RvX3dpbjMyX3BhdGgod29ya0Rpciwgd2luRGlyKTsK LSAgICAgICAgcmV0dXJuIHdpblN0YXJ0KHdpblBhdGgsIGFjdGlvbiwgYXJn cywgd2luRGlyLCBzaG93LCB2ZXJib3NlKTsKKyAgICAgICAgcmV0dXJuIHdp blN0YXJ0KHdpblBhdGgsIGFjdGlvbiwgYXJncywgd2luRGlyLCBzaG93LCBz dGFydEZsYWdzKTsKICAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gd2lu U3RhcnQod2luUGF0aCwgYWN0aW9uLCBhcmdzLCBOVUxMLCBzaG93LCB2ZXJi b3NlKTsKKyAgICAgICAgcmV0dXJuIHdpblN0YXJ0KHdpblBhdGgsIGFjdGlv biwgYXJncywgTlVMTCwgc2hvdywgc3RhcnRGbGFncyk7CiAgICAgfQogfQog CitzdGF0aWMgdm9pZCBwcmludExhc3RFcnJvcihGSUxFKiBmaWxlKTsKKwog LyogU3RhcnQgYSBwcm9ncmFtLCBvciBvcGVuIGEgZmlsZSBvciBVUkwsIHVz aW5nIFdpbmRvd3MgcGF0aHMgKi8KIHN0YXRpYyBpbnQgd2luU3RhcnQoY29u c3QgY2hhciAqYVBhdGgsIGNvbnN0IGNoYXIgKmFjdGlvbiwgY29uc3QgY2hh ciAqYXJncywKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqd29y a0RpciwgaW50IHNob3csIGludCB2ZXJib3NlKQorICAgICAgICAgICAgICAg ICAgICBjb25zdCBjaGFyICp3b3JrRGlyLCBpbnQgc2hvdywgU3RhcnRGbGFn cyBzdGFydEZsYWdzKQogewotICAgIGludCByZXQ7Ci0KICAgICAvKiBOZWVk IHRvIHN5bmMgdGhlIFdpbmRvd3MgZW52aXJvbm1lbnQgKi8KICAgICBjeWd3 aW5faW50ZXJuYWwoQ1dfU1lOQ19XSU5FTlYpOwogCi0gICAgaWYgKHZlcmJv c2UpIHsKKyAgICBpZiAoc3RhcnRGbGFncyAmIFNGX1ZFUkJPU0UpIHsKICAg ICAgICAgcHJpbnRmKCJTaGVsbEV4ZWN1dGUoTlVMTCwgXCIlc1wiLCBcIiVz XCIsIFwiJXNcIiwgXCIlc1wiLCAlZClcbiIsCiAgICAgICAgICAgICAgICBh Y3Rpb24sIGFQYXRoLCBhcmdzLCB3b3JrRGlyLCBzaG93KTsKICAgICB9Ci0K LSAgICByZXQgPSAoaW50KSBTaGVsbEV4ZWN1dGUoTlVMTCwgYWN0aW9uLCBh UGF0aCwgYXJncywgd29ya0Rpciwgc2hvdyk7Ci0gICAgaWYgKHJldCA+PSAz MikgewotICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAKKyAgICBpZiAoIShz dGFydEZsYWdzICYgU0ZfV0FJVCkpIHsKKyAgICAgICAgaW50IHJldCA9IChp bnQpIFNoZWxsRXhlY3V0ZShOVUxMLCBhY3Rpb24sIGFQYXRoLCBhcmdzLCB3 b3JrRGlyLCBzaG93KTsKKyAgICAgICAgCisgICAgICAgIGlmIChyZXQgPj0g MzIpIHsKKyAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICB9IGVs c2UgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJVbmFibGUgdG8g c3RhcnQgJyVzJzogJXNcbiIsIGFQYXRoLCBzdGFydEVycm9yKHJldCkpOwor ICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9CiAgICAgfSBl bHNlIHsKLSAgICAgICAgcHJpbnRmKCJVbmFibGUgdG8gc3RhcnQgJyVzJzog JXNcbiIsIGFQYXRoLCBzdGFydEVycm9yKHJldCkpOwotICAgICAgICByZXR1 cm4gRkFMU0U7CisgICAgICAgIFNIRUxMRVhFQ1VURUlORk8gc2VpOworICAg ICAgICAKKyAgICAgICAgbWVtc2V0KCZzZWksIDAsIHNpemVvZihzZWkpKTsK KyAgICAgICAgc2VpLmNiU2l6ZSA9IHNpemVvZihzZWkpOworICAgICAgICBz ZWkubHBWZXJiID0gYWN0aW9uOworICAgICAgICBzZWkubHBGaWxlID0gYVBh dGg7CisgICAgICAgIHNlaS5scFBhcmFtZXRlcnMgPSBhcmdzOworICAgICAg ICBzZWkubHBEaXJlY3RvcnkgPSB3b3JrRGlyOworICAgICAgICBzZWkublNo b3cgPSBzaG93OworICAgICAgICBzZWkuZk1hc2sgfD0gU0VFX01BU0tfTk9D TE9TRVBST0NFU1MgfCBTRUVfTUFTS19GTEFHX05PX1VJOworICAgICAgICAK KyAgICAgICAgaWYgKCFTaGVsbEV4ZWN1dGVFeCgmc2VpKSkgeworICAgICAg ICAgICAgaWYgKCgoaW50KSBzZWkuaEluc3RBcHApIDwgMzIpIHsKKyAgICAg ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVuYWJsZSB0byBzdGFydCAn JXMnOiAlc1xuIiwgYVBhdGgsIHN0YXJ0RXJyb3IoKGludCkgc2VpLmhJbnN0 QXBwKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAg ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVy ciwgIlVuYWJsZSB0byBzdGFydCAnJXMnOiAiLCBhUGF0aCk7CisgICAgICAg ICAgICAgICAgcHJpbnRMYXN0RXJyb3Ioc3RkZXJyKTsKKyAgICAgICAgICAg ICAgICBmcHJpbnRmKHN0ZGVyciwgIlxuIik7CisgICAgICAgICAgICAgICAg cmV0dXJuIEZBTFNFOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg ICAgIAorICAgICAgICBpZiAoc2VpLmhQcm9jZXNzKSB7CisgICAgICAgICAg ICBXYWl0Rm9yU2luZ2xlT2JqZWN0KHNlaS5oUHJvY2VzcywgSU5GSU5JVEUp OworICAgICAgICAgICAgQ2xvc2VIYW5kbGUoc2VpLmhQcm9jZXNzKTsKKyAg ICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAg fQorfQorCisvKiBQcmludCBhIGNvcnJlY3RseS1sb2NhbGl6ZWQgZXJyb3Ig bWVzc2FnZSBmb3IgR2V0TGFzdEVycm9yKCkgdG8gdGhlIGdpdmVuIAorICAg ZmlsZSBkZXNjcmlwdG9yLiAqLworc3RhdGljIHZvaWQgcHJpbnRMYXN0RXJy b3IoRklMRSogZmlsZSkKK3sKKyAgICBMUFNUUiBidWYgPSAwOworICAgIAor ICAgIGlmICghRm9ybWF0TWVzc2FnZSgKKyAgICAgICAgRk9STUFUX01FU1NB R0VfQUxMT0NBVEVfQlVGRkVSIHwgRk9STUFUX01FU1NBR0VfRlJPTV9TWVNU RU0sCisgICAgICAgIDAsCisgICAgICAgIEdldExhc3RFcnJvcigpLAorICAg ICAgICAwLAorICAgICAgICAoTFBTVFIpICZidWYsCisgICAgICAgIDAsIC8v IG1pbiBzaXplCisgICAgICAgIDApKQorICAgIHsKKyAgICAgICAgLy8gYXZv aWQgcmVjdXJzaW9uIGdldHRpbmcgbWVzc2FnZSAtIHBvc3NpYmxlIGJ1dCBp bmZpbml0ZS1wcm9uZQorICAgICAgICBmcHJpbnRmKGZpbGUsICJDb3VsZG4n dCByZXRyaWV2ZSBlcnJvciBtZXNzYWdlIik7CisgICAgICAgIHJldHVybjsK ICAgICB9CisgICAgCisgICAgZnB1dHMoYnVmLCBmaWxlKTsKKyAgICAKKyAg ICBMb2NhbEZyZWUoYnVmKTsKIH0KIAogLyogUmV0dXJuIGFuIGVycm9yIG1l c3NhZ2UsIGdpdmVuIGEgU2hlbGxFeGVjdXRlIHJldHVybiBjb2RlICovCg== ----=_42q0a4dsqt8oqqk7b48gpkninlklbaihf5.MFSBCHJLHS Content-Type: text/plain; charset=us-ascii -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/ ----=_42q0a4dsqt8oqqk7b48gpkninlklbaihf5.MFSBCHJLHS--
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |