📄 170
字号:
Replied: Sat, 27 Sep 1997 00:41:05 -0400Replied: "Ulrich.Windl@rz.uni-regensburg.de "Replied: Fri, 26 Sep 1997 23:28:02 -0400Replied: "Ulrich.Windl@rz.uni-regensburg.de "Received: from mail.eecis.udel.edu by whimsy.udel.edu id aa00993; 26 Sep 1997 03:09 EDTReceived: from ngate.ngate.uni-regensburg.de (ngate.rz.uni-regensburg.de [132.199.3.13]) by rrzs2.rz.uni-regensburg.de (8.8.5/8.8.5) with SMTP id JAA06969 for <stenn@whimsy.udel.edu>; Fri, 26 Sep 1997 09:08:58 +0200 (MET DST)Received: from rz.uni-regensburg.de by ngate.ngate.uni-regensburg.de; Fri, 26 Sep 97 08:09 METReceived: from rz.uni-regensburg.de by kgate.ngate.uni-regensburg.de; Fri, 26 Sep 97 07:08 GMTReceived: from localhost by rkdvmhp1.dvm.klinik.uni-regensburg.de with SMTP (1.40.112.8/16.2-961007-2) id AA122667724; Fri, 26 Sep 1997 09:08:44 +0200Date: Fri, 26 Sep 1997 09:08:44 +0200 (MESZ)From: Ulrich Windl <@rkdvmhp1.dvm.klinik.uni-regensburg.de:>Reply-To: Ulrich.Windl@rz.uni-regensburg.deTo: Harlan Stenn <stenn@whimsy.udel.edu>Subject: xntp patchesMessage-Id: <Pine.HPP.3.96.970926085623.12041A-300000@rkdvmhp1.dvm.klinik.uni-regensburg.de>X-Pgp-Key: 1024/E843660D: CF D7 43 A1 5A 49 14 25 7C 04 A0 6E 4C 3A AC 6DMime-Version: 1.0Content-Type: MULTIPART/MIXED; BOUNDARY="759665152-851401618-875257724=:12041" This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info.--759665152-851401618-875257724=:12041Content-Type: TEXT/PLAIN; charset=US-ASCIIHarlan,maybe you can remember yesterday's message about platform-specific portinitialization. Yesterday I debugged why ATOM won't work with Linux.I found out that ntp_refclock.c contains a lot of specific stuff that doesnot work correctly. For example there's a SYS_SOLARIS and a STREAM symbolthere that config.h does not know about. The file should be cleaned up.For the meantime I added a one-liner in refclock_atom that will do it forLinux (and maybe others too). Look for "Linux" in the patch.I also included a patch from Frank kardel that fixes a buffer overflow inthe parse driver (I had reported several times). I use this patch with3-5.90.2 for several weeks now and the overflow is gone. Frank wanted tosend you the patch, too, but maybe he was too busy...Yesterday I reported anotherminor problem to Frank, but look at the outputfirst:rkdvmhp1:windl(29) % ntpq -c clstatus=0004 clk_okay, last_clk_propagationdevice="Meinberg DCF PZF 535/TCXO",timecode="\x0226.09.97; 5; 09:04:42; S \x03", poll=23359,noreply=0, badformat=0, baddata=0, fudgetime1=1.953, fudgetime2=0.000,stratum=0, refid=DCFp, flags=0,refclock_time="b7d5dd0a.00000000 Fri, Sep 26 1997 9:04:42.000 (+0200)",refclock_status="DST; TIME CODE; (LEAP INDICATION; ANTENNA)",refclock_format="Meinberg Extended",refclock_states="*NOMINAL: 24d+12:17:46 (70.83%); NO RESPONSE: 00:00:01 (0.00%);FAULT: 07:06:01 (0.85%); PROPAGATION DELAY: 9d+19:06:21 (28.30%);ILLEGAL TIME: 00:01:04 (0.00%); running time: 34d+14:31:13"All fields except the first are separated by a comma, and the values areenclosed by double-quotes if it's a string. I wrote a CGI script tomonitor xntpd, and thus I recognized the inconsistency...Regards,UlrichP.S: Hope your mailer survives...--759665152-851401618-875257724=:12041Content-Type: TEXT/PLAIN; charset=ISO-8859-1; name=kardel-parse-patchContent-Transfer-Encoding: BASE64Content-ID: <Pine.HPP.3.96.970926090843.12041B@rkdvmhp1.dvm.klinik.uni-regensburg.de>Content-Description: avoid buffer overflowfor PARSE driverSW5kZXg6IHJlZmNsb2NrX3BhcnNlLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvc3JjL05UUC9SRVBPU0lUT1JZL3Y0L3hudHBkL3JlZmNsb2NrX3BhcnNlLmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAzLjEwMQ0KcmV0cmlldmluZyByZXZpc2lvbiAzLjEwMw0KZGlmZiAtYyAtcjMuMTAxIC1yMy4xMDMNCioqKiByZWZjbG9ja19wYXJzZS5jCTE5OTcvMDQvMTMgMTA6MDU6MzcJMy4xMDENCi0tLSByZWZjbG9ja19wYXJzZS5jCTE5OTcvMDcvMTIgMTU6MzU6MTYJMy4xMDMNCioqKioqKioqKioqKioqKg0KKioqIDEsNyAqKioqDQogIC8qDQohICAqIC9zcmMvTlRQL1JFUE9TSVRPUlkvdjQveG50cGQvcmVmY2xvY2tfcGFyc2UuYyx2IDMuMTAxIDE5OTcvMDQvMTMgMTA6MDU6Mzcga2FyZGVsIEV4cA0KICAgKg0KISAgKiByZWZjbG9ja19wYXJzZS5jLHYgMy4xMDEgMTk5Ny8wNC8xMyAxMDowNTozNyBrYXJkZWwgRXhwDQogICAqDQogICAqIGdlbmVyaWMgcmVmZXJlbmNlIGNsb2NrIGRyaXZlciBmb3IgcmVjZWl2ZXJzDQogICAqDQotLS0gMSw3IC0tLS0NCiAgLyoNCiEgICogL3NyYy9OVFAvUkVQT1NJVE9SWS92NC94bnRwZC9yZWZjbG9ja19wYXJzZS5jLHYgMy4xMDMgMTk5Ny8wNy8xMiAxNTozNToxNiBrYXJkZWwgRXhwDQogICAqDQohICAqIHJlZmNsb2NrX3BhcnNlLmMsdiAzLjEwMyAxOTk3LzA3LzEyIDE1OjM1OjE2IGthcmRlbCBFeHANCiAgICoNCiAgICogZ2VuZXJpYyByZWZlcmVuY2UgY2xvY2sgZHJpdmVyIGZvciByZWNlaXZlcnMNCiAgICoNCioqKioqKioqKioqKioqKg0KKioqIDksMTUgKioqKg0KICAgKiBhdmFpbGFibGUgYW5kIGNvbmZpZ3VyZWQuIEN1cnJlbnRseSB0aGUgU1RSRUFNUyBtb2R1bGUNCiAgICogaXMgb25seSBhdmFpbGFibGUgZm9yIFN1bnMgcnVubmluZyBTdW5PUyA0LnggYW5kIFN1bk9TNS54DQogICAqDQohICAqIENvcHlyaWdodCAoYykgMTk4OSwxOTkwLDE5OTEsMTk5MiwxOTkzLDE5OTQsMTk5NSwxOTk2LCAxOTk3IGJ5IEZyYW5rIEthcmRlbA0KICAgKiBGcmllZHJpY2gtQWxleGFuZGVyIFVuaXZlcnNpdOR0IEVybGFuZ2VuLU78cm5iZXJnLCBHZXJtYW55DQogICAqDQogICAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KLS0tIDksMTUgLS0tLQ0KICAgKiBhdmFpbGFibGUgYW5kIGNvbmZpZ3VyZWQuIEN1cnJlbnRseSB0aGUgU1RSRUFNUyBtb2R1bGUNCiAgICogaXMgb25seSBhdmFpbGFibGUgZm9yIFN1bnMgcnVubmluZyBTdW5PUyA0LnggYW5kIFN1bk9TNS54DQogICAqDQohICAqIENvcHlyaWdodCAoYykgMTk4OSwgMTk5MCwgMTk5MSwgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NyBieSBGcmFuayBLYXJkZWwNCiAgICogRnJpZWRyaWNoLUFsZXhhbmRlciBVbml2ZXJzaXTkdCBFcmxhbmdlbi1O/HJuYmVyZywgR2VybWFueQ0KICAgKg0KICAgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCioqKioqKioqKioqKioqKg0KKioqIDE0OCwxNTQgKioqKg0KICAjaW5jbHVkZSAicGFyc2UuaCINCiAgDQogICNpZiAhZGVmaW5lZChOT19TQ0NTSUQpICYmICFkZWZpbmVkKGxpbnQpICYmICFkZWZpbmVkKF9fR05VQ19fKQ0KISBzdGF0aWMgY2hhciByY3NpZFtdPSJyZWZjbG9ja19wYXJzZS5jLHYgMy4xMDEgMTk5Ny8wNC8xMyAxMDowNTozNyBrYXJkZWwgRXhwIjsNCiAgI2VuZGlmDQogIA0KICAvKio9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSAxNDgsMTU0IC0tLS0NCiAgI2luY2x1ZGUgInBhcnNlLmgiDQogIA0KICAjaWYgIWRlZmluZWQoTk9fU0NDU0lEKSAmJiAhZGVmaW5lZChsaW50KSAmJiAhZGVmaW5lZChfX0dOVUNfXykNCiEgc3RhdGljIGNoYXIgcmNzaWRbXT0icmVmY2xvY2tfcGFyc2UuYyx2IDMuMTAzIDE5OTcvMDcvMTIgMTU6MzU6MTYga2FyZGVsIEV4cCI7DQogICNlbmRpZg0KICANCiAgLyoqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoqKioqKioqKioqKioqKioNCioqKiAzNjIsMzY4ICoqKioNCiAgICAgKiBjbG9jayBzdGF0ZSBoYW5kbGluZy9yZXBvcnRpbmcNCiAgICAgKi8NCiAgICB1X2NoYXIJICAgICAgZmxhZ3M7CSAgICAgICAgLyogZmxhZ3MgKGxlYXBfY29udHJvbCkgKi8NCi0gICB1X2NoYXIgICAgICAgICAgICAgIGxhc3RldmVudDsgCS8qIGxhc3Qgbm90IE5PUk1BTCBzdGF0dXMgKi8NCiAgICB1X2xvbmcJICAgICAgbGFzdGNoYW5nZTsgICAgICAgLyogdGltZSAoeG50cCkgd2hlbiBsYXN0IHN0YXRlIGNoYW5nZSBhY2N1cmVkICovDQogICAgdV9sb25nCSAgICAgIHN0YXRldGltZVtDRVZOVF9NQVgrMV07IC8qIGFjY3VtdWxhdGVkIHRpbWUgb2YgY2xvY2sgc3RhdGVzICovDQogICAgc3RydWN0IGV2ZW50ICAgICAgICBzdGF0dGltZXI7ICAgICAgICAvKiBzdGF0aXN0aWNzIHRpbWVyICovDQotLS0gMzYyLDM2NyAtLS0tDQoqKioqKioqKioqKioqKioNCioqKiA0OTEsNDk4ICoqKioNCiAgI2RlZmluZSBEQ0ZQWkY1MzVPQ1hPX0lGTEFHICAgICAgICAgTUJHX0lGTEFHDQogICNkZWZpbmUgRENGUFpGNTM1T0NYT19PRkxBRyAgICAgICAgIE1CR19PRkxBRw0KICAjZGVmaW5lIERDRlBaRjUzNU9DWE9fTEZMQUcgICAgICAgICBNQkdfTEZMQUcNCiEgI2RlZmluZSBEQ0ZQWkY1MzVPQ1hPX1NBTVBMRVMJCSAgICA1DQohICNkZWZpbmUgRENGUFpGNTM1T0NYT19LRUVQCSAgICAgICAgICAgIDMNCiAgDQogIC8qDQogICAqIE1laW5iZXJnIEdQUzE2NiByZWNlaXZlcg0KLS0tIDQ5MCw0OTcgLS0tLQ0KICAjZGVmaW5lIERDRlBaRjUzNU9DWE9fSUZMQUcgICAgICAgICBNQkdfSUZMQUcNCiAgI2RlZmluZSBEQ0ZQWkY1MzVPQ1hPX09GTEFHICAgICAgICAgTUJHX09GTEFHDQogICNkZWZpbmUgRENGUFpGNTM1T0NYT19MRkxBRyAgICAgICAgIE1CR19MRkxBRw0KISAjZGVmaW5lIERDRlBaRjUzNU9DWE9fU0FNUExFUwkJICAgMzINCiEgI2RlZmluZSBEQ0ZQWkY1MzVPQ1hPX0tFRVAJICAgICAgICAgICAyMA0KICANCiAgLyoNCiAgICogTWVpbmJlcmcgR1BTMTY2IHJlY2VpdmVyDQoqKioqKioqKioqKioqKioNCioqKiA1MTUsNTIyICoqKioNCiAgI2RlZmluZSBHUFMxNjZfREFUQQkJTk9fREFUQQ0KICAjZGVmaW5lIEdQUzE2Nl9JRAkJR1BTX0lEDQogICNkZWZpbmUgR1BTMTY2X0ZPUk1BVAkJTk9fRk9STUFUDQohICNkZWZpbmUgR1BTMTY2X1NBTVBMRVMJCTUNCiEgI2RlZmluZSBHUFMxNjZfS0VFUAkJMw0KICANCiAgLyoNCiAgICogRUxWIERDRjcwMDAgV2FsbGNsb2NrLVJlY2VpdmVyL1N3aXRjaGluZyBDbG9jayAoS2l0KQ0KLS0tIDUxNCw1MjEgLS0tLQ0KICAjZGVmaW5lIEdQUzE2Nl9EQVRBCQlOT19EQVRBDQogICNkZWZpbmUgR1BTMTY2X0lECQlHUFNfSUQNCiAgI2RlZmluZSBHUFMxNjZfRk9STUFUCQlOT19GT1JNQVQNCiEgI2RlZmluZSBHUFMxNjZfU0FNUExFUwkJMzINCiEgI2RlZmluZSBHUFMxNjZfS0VFUAkJMjANCiAgDQogIC8qDQogICAqIEVMViBEQ0Y3MDAwIFdhbGxjbG9jay1SZWNlaXZlci9Td2l0Y2hpbmcgQ2xvY2sgKEtpdCkNCioqKioqKioqKioqKioqKg0KKioqIDE2MDUsMTYxMSAqKioqDQogIHN0cmVhbV9wb2xsKHBhcnNlKQ0KICAgICAgIHN0cnVjdCBwYXJzZXVuaXQgKnBhcnNlOw0KICB7DQohICAgcmVnaXN0ZXIgaW50IGZkLCBpLCBydGM7DQogICAgZmRfc2V0IGZkbWFzazsNCiAgICBzdHJ1Y3QgdGltZXZhbCB0aW1lb3V0LCBzdGFydHRpbWUsIGN1cnRpbWUsIHNlbGVjdHRpbWU7DQogICNpZmRlZiBIQVZFX0dFVENMT0NLDQotLS0gMTYwNCwxNjEwIC0tLS0NCiAgc3RyZWFtX3BvbGwocGFyc2UpDQogICAgICAgc3RydWN0IHBhcnNldW5pdCAqcGFyc2U7DQogIHsNCiEgICBpbnQgZmQsIGksIHJ0YzsNCiAgICBmZF9zZXQgZmRtYXNrOw0KICAgIHN0cnVjdCB0aW1ldmFsIHRpbWVvdXQsIHN0YXJ0dGltZSwgY3VydGltZSwgc2VsZWN0dGltZTsNCiAgI2lmZGVmIEhBVkVfR0VUQ0xPQ0sNCioqKioqKioqKioqKioqKg0KKioqIDE5OTQsMjAwMSAqKioqDQogICAgICAgc3RydWN0IHJlY3ZidWYgKnJidWZwOw0KICB7DQogICAgc3RydWN0IHBhcnNldW5pdCAqcGFyc2UgPSAoc3RydWN0IHBhcnNldW5pdCAqKXJidWZwLT5yZWN2X3NyY2Nsb2NrOw0KISAgIHJlZ2lzdGVyIGludCBjb3VudDsNCiEgICByZWdpc3RlciB1bnNpZ25lZCBjaGFyICpzOw0KICAgIHRpbWVzdGFtcF90IHRzOw0KICANCiAgICBpZiAoIXBhcnNlLT5wZWVyKQ0KLS0tIDE5OTMsMjAwMCAtLS0tDQogICAgICAgc3RydWN0IHJlY3ZidWYgKnJidWZwOw0KICB7DQogICAgc3RydWN0IHBhcnNldW5pdCAqcGFyc2UgPSAoc3RydWN0IHBhcnNldW5pdCAqKXJidWZwLT5yZWN2X3NyY2Nsb2NrOw0KISAgIGludCBjb3VudDsNCiEgICB1bnNpZ25lZCBjaGFyICpzOw0KICAgIHRpbWVzdGFtcF90IHRzOw0KICANCiAgICBpZiAoIXBhcnNlLT5wZWVyKQ0KKioqKioqKioqKioqKioqDQoqKiogMjA1OCwyMDY0ICoqKioNCiAgbG9jYWxfcG9sbChwYXJzZSkNCiAgICAgICBzdHJ1Y3QgcGFyc2V1bml0ICpwYXJzZTsNCiAgew0KISAgIHJlZ2lzdGVyIGludCBmZCwgaSwgcnRjOw0KICAgIGZkX3NldCBmZG1hc2s7DQogICAgc3RydWN0IHRpbWV2YWwgdGltZW91dCwgc3RhcnR0aW1lLCBjdXJ0aW1lLCBzZWxlY3R0aW1lOw0KICAjaWZkZWYgSEFWRV9HRVRDTE9DSw0KLS0tIDIwNTcsMjA2MyAtLS0tDQogIGxvY2FsX3BvbGwocGFyc2UpDQogICAgICAgc3RydWN0IHBhcnNldW5pdCAqcGFyc2U7DQogIHsNCiEgICBpbnQgZmQsIGksIHJ0YzsNCiAgICBmZF9zZXQgZmRtYXNrOw0KICAgIHN0cnVjdCB0aW1ldmFsIHRpbWVvdXQsIHN0YXJ0dGltZSwgY3VydGltZSwgc2VsZWN0dGltZTsNCiAgI2lmZGVmIEhBVkVfR0VUQ0xPQ0sNCioqKioqKioqKioqKioqKg0KKioqIDIxODAsMjE4NiAqKioqDQogIAl7DQogIAkgIGNoYXIgaW5idWZbMjU2XTsNCiAgDQohIAkgIHJlZ2lzdGVyIGNoYXIgKnMgPSBpbmJ1ZjsNCiAgDQogIAkgIHJ0YyA9IGkgPSByZWFkKGZkLCBpbmJ1Ziwgc2l6ZW9mKGluYnVmKSk7DQogIA0KLS0tIDIxNzksMjE4NSAtLS0tDQogIAl7DQogIAkgIGNoYXIgaW5idWZbMjU2XTsNCiAgDQohIAkgIGNoYXIgKnMgPSBpbmJ1ZjsNCiAgDQogIAkgIHJ0YyA9IGkgPSByZWFkKGZkLCBpbmJ1Ziwgc2l6ZW9mKGluYnVmKSk7DQogIA0KKioqKioqKioqKioqKioqDQoqKiogMjIxNywyMjIzICoqKioNCiAgaW5pdF9pb2JpbmRpbmcocGFyc2UpDQogICAgICAgc3RydWN0IHBhcnNldW5pdCAqcGFyc2U7DQogIHsNCiEgICByZWdpc3RlciBiaW5kX3QgKmIgPSBpb19iaW5kaW5nczsNCiAgDQogICAgd2hpbGUgKGItPmJkX2Rlc2NyaXB0aW9uICE9IChjaGFyICopMCkNCiAgICAgIHsNCi0tLSAyMjE2LDIyMjIgLS0tLQ0KICBpbml0X2lvYmluZGluZyhwYXJzZSkNCiAgICAgICBzdHJ1Y3QgcGFyc2V1bml0ICpwYXJzZTsNCiAgew0KISAgIGJpbmRfdCAqYiA9IGlvX2JpbmRpbmdzOw0KICANCiAgICB3aGlsZSAoYi0+YmRfZGVzY3JpcHRpb24gIT0gKGNoYXIgKikwKQ0KICAgICAgew0KKioqKioqKioqKioqKioqDQoqKiogMjI5MywyMjk5ICoqKioNCiAgDQogICAgaWYgKHN0YXRlICYgKFBBUlNFQl9TX0xFQVB8UEFSU0VCX1NfQU5URU5OQXxQQVJTRUJfU19QUFN8UEFSU0VCX1NfUE9TSVRJT04pKQ0KICAgICAgew0KISAgICAgICByZWdpc3RlciBjaGFyICpzLCAqdDsNCiAgDQogICAgICAgIGlmIChidWZmZXJbMF0pDQogIAlzdHJjYXQoYnVmZmVyLCAiOyAiKTsNCi0tLSAyMjkyLDIyOTggLS0tLQ0KICANCiAgICBpZiAoc3RhdGUgJiAoUEFSU0VCX1NfTEVBUHxQQVJTRUJfU19BTlRFTk5BfFBBUlNFQl9TX1BQU3xQQVJTRUJfU19QT1NJVElPTikpDQogICAgICB7DQohICAgICAgIGNoYXIgKnMsICp0Ow0KICANCiAgICAgICAgaWYgKGJ1ZmZlclswXSkNCiAgCXN0cmNhdChidWZmZXIsICI7ICIpOw0KKioqKioqKioqKioqKioqDQoqKiogMjM4NSwyMzkxICoqKioNCiAgICAgICAgeyBDRVZOVF9QUk9QLCAgICAiUFJPUEFHQVRJT04gREVMQVkiIH0sDQogICAgICAgIHsgQ0VWTlRfQkFEREFURSwgIklMTEVHQUwgREFURSIgfSwNCiAgICAgICAgeyBDRVZOVF9CQURUSU1FLCAiSUxMRUdBTCBUSU1FIiB9LA0KISAgICAgICB7IH4wIH0NCiAgICAgIH07DQogICAgaW50IGk7DQogIA0KLS0tIDIzODQsMjM5MCAtLS0tDQogICAgICAgIHsgQ0VWTlRfUFJPUCwgICAgIlBST1BBR0FUSU9OIERFTEFZIiB9LA0KICAgICAgICB7IENFVk5UX0JBRERBVEUsICJJTExFR0FMIERBVEUiIH0sDQogICAgICAgIHsgQ0VWTlRfQkFEVElNRSwgIklMTEVHQUwgVElNRSIgfSwNCiEgICAgICAgeyB+MFVMIH0NCiAgICAgIH07DQogICAgaW50IGk7DQogIA0KKioqKioqKioqKioqKioqDQoqKiogMjQxNCwyNDI2ICoqKioNCiAgDQogIHN0YXRpYyBjaGFyICoNCiAgbWthc2NpaShidWZmZXIsIGJsZW4sIHNyYywgc3JjbGVuKQ0KISAgIHJlZ2lzdGVyIGNoYXIgICpidWZmZXI7DQohICAgcmVnaXN0ZXIgbG9uZyAgYmxlbjsNCiEgICByZWdpc3RlciBjaGFyICAqc3JjOw0KISAgIHJlZ2lzdGVyIGxvbmcgIHNyY2xlbjsNCiAgew0KISAgIHJlZ2lzdGVyIGNoYXIgKmIgICAgPSBidWZmZXI7DQohICAgcmVnaXN0ZXIgY2hhciAqZW5kYiA9IChjaGFyICopMDsNCiAgDQogICAgaWYgKGJsZW4gPCA0KQ0KICAgICAgcmV0dXJuIChjaGFyICopMDsJCS8qIGRvbid0IGJvdGhlciB3aXRoIG1pbmkgYnVmZmVycyAqLw0KLS0tIDI0MTMsMjQyNSAtLS0tDQogIA0KICBzdGF0aWMgY2hhciAqDQogIG1rYXNjaWkoYnVmZmVyLCBibGVuLCBzcmMsIHNyY2xlbikNCiEgICBjaGFyICAqYnVmZmVyOw0KISAgIGxvbmcgIGJsZW47DQohICAgY2hhciAgKnNyYzsNCiEgICBsb25nICBzcmNsZW47DQogIHsNCiEgICBjaGFyICpiICAgID0gYnVmZmVyOw0KISAgIGNoYXIgKmVuZGIgPSAoY2hhciAqKTA7DQogIA0KICAgIGlmIChibGVuIDwgNCkNCiAgICAgIHJldHVybiAoY2hhciAqKTA7CQkvKiBkb24ndCBib3RoZXIgd2l0aCBtaW5pIGJ1ZmZlcnMgKi8NCioqKioqKioqKioqKioqKg0KKioqIDI1MDcsMjUxNSAqKioqDQogICAqLw0KICBzdGF0aWMgdm9pZA0KICBwYXJzZV9zdGF0aXN0aWNzKHBhcnNlKQ0KISAgIHJlZ2lzdGVyIHN0cnVjdCBwYXJzZXVuaXQgKnBhcnNlOw0KICB7DQohICAgcmVnaXN0ZXIgaW50IGk7DQogIA0KICAgIE5MT0coTkxPR19DTE9DS1NUQVRJU1QpIC8qIGNvbmRpdGlvbmFsIGlmIGNsYXVzZSBmb3IgY29uZGl0aW9uYWwgc3lzbG9nICovDQogICAgICB7DQotLS0gMjUwNiwyNTE0IC0tLS0NCiAgICovDQogIHN0YXRpYyB2b2lkDQogIHBhcnNlX3N0YXRpc3RpY3MocGFyc2UpDQohICAgc3RydWN0IHBhcnNldW5pdCAqcGFyc2U7DQogIHsNCiEgICBpbnQgaTsNCiAgDQogICAgTkxPRyhOTE9HX0NMT0NLU1RBVElTVCkgLyogY29uZGl0aW9uYWwgaWYgY2xhdXNlIGZvciBjb25kaXRpb25hbCBzeXNsb2cgKi8NCiAgICAgIHsNCioqKioqKioqKioqKioqKg0KKioqIDI1MjMsMjUzMCAqKioqDQogIA0KICAgICAgICBmb3IgKGkgPSAwOyBpIDw9IENFVk5UX01BWDsgaSsrKQ0KICAJew0KISAJICByZWdpc3RlciB1X2xvbmcgc3RpbWU7DQohIAkgIHJlZ2lzdGVyIHVfbG9uZyBwZXJjZW50LCBkaXYgPSBjdXJyZW50X3RpbWUgLSBwYXJzZS0+Z2VuZXJpYy0+dGltZXN0YXJ0ZWQ7DQogIA0KICAJICBwZXJjZW50ID0gc3RpbWUgPSBQQVJTRV9TVEFURVRJTUUocGFyc2UsIGkpOw0KICANCi0tLSAyNTIyLDI1MjkgLS0tLQ0KICANCiAg
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -