@@ -629,6 +629,160 @@ static void open_haptics_device( struct provider *provider )
629629 CloseHandle ( device );
630630}
631631
632+ static const DIOBJECTDATAFORMAT data_format_objs [] =
633+ {
634+ {NULL ,DIJOFS_X ,DIDFT_OPTIONAL |DIDFT_AXIS |DIDFT_ANYINSTANCE },
635+ {NULL ,DIJOFS_Y ,DIDFT_OPTIONAL |DIDFT_AXIS |DIDFT_ANYINSTANCE },
636+ {NULL ,DIJOFS_Z ,DIDFT_OPTIONAL |DIDFT_AXIS |DIDFT_ANYINSTANCE },
637+ {NULL ,DIJOFS_RX ,DIDFT_OPTIONAL |DIDFT_AXIS |DIDFT_ANYINSTANCE },
638+ {NULL ,DIJOFS_RY ,DIDFT_OPTIONAL |DIDFT_AXIS |DIDFT_ANYINSTANCE },
639+ {NULL ,DIJOFS_RZ ,DIDFT_OPTIONAL |DIDFT_AXIS |DIDFT_ANYINSTANCE },
640+ {NULL ,DIJOFS_SLIDER (0 ),DIDFT_OPTIONAL |DIDFT_AXIS |DIDFT_ANYINSTANCE },
641+ {NULL ,DIJOFS_SLIDER (1 ),DIDFT_OPTIONAL |DIDFT_AXIS |DIDFT_ANYINSTANCE },
642+ {NULL ,DIJOFS_POV (0 ),DIDFT_OPTIONAL |DIDFT_POV |DIDFT_ANYINSTANCE },
643+ {NULL ,DIJOFS_POV (1 ),DIDFT_OPTIONAL |DIDFT_POV |DIDFT_ANYINSTANCE },
644+ {NULL ,DIJOFS_POV (2 ),DIDFT_OPTIONAL |DIDFT_POV |DIDFT_ANYINSTANCE },
645+ {NULL ,DIJOFS_POV (3 ),DIDFT_OPTIONAL |DIDFT_POV |DIDFT_ANYINSTANCE },
646+ {NULL ,DIJOFS_BUTTON (0 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
647+ {NULL ,DIJOFS_BUTTON (1 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
648+ {NULL ,DIJOFS_BUTTON (2 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
649+ {NULL ,DIJOFS_BUTTON (3 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
650+ {NULL ,DIJOFS_BUTTON (4 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
651+ {NULL ,DIJOFS_BUTTON (5 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
652+ {NULL ,DIJOFS_BUTTON (6 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
653+ {NULL ,DIJOFS_BUTTON (7 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
654+ {NULL ,DIJOFS_BUTTON (8 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
655+ {NULL ,DIJOFS_BUTTON (9 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
656+ {NULL ,DIJOFS_BUTTON (10 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
657+ {NULL ,DIJOFS_BUTTON (11 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
658+ {NULL ,DIJOFS_BUTTON (12 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
659+ {NULL ,DIJOFS_BUTTON (13 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
660+ {NULL ,DIJOFS_BUTTON (14 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
661+ {NULL ,DIJOFS_BUTTON (15 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
662+ {NULL ,DIJOFS_BUTTON (16 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
663+ {NULL ,DIJOFS_BUTTON (17 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
664+ {NULL ,DIJOFS_BUTTON (18 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
665+ {NULL ,DIJOFS_BUTTON (19 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
666+ {NULL ,DIJOFS_BUTTON (20 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
667+ {NULL ,DIJOFS_BUTTON (21 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
668+ {NULL ,DIJOFS_BUTTON (22 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
669+ {NULL ,DIJOFS_BUTTON (23 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
670+ {NULL ,DIJOFS_BUTTON (24 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
671+ {NULL ,DIJOFS_BUTTON (25 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
672+ {NULL ,DIJOFS_BUTTON (26 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
673+ {NULL ,DIJOFS_BUTTON (27 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
674+ {NULL ,DIJOFS_BUTTON (28 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
675+ {NULL ,DIJOFS_BUTTON (29 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
676+ {NULL ,DIJOFS_BUTTON (30 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
677+ {NULL ,DIJOFS_BUTTON (31 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
678+ {NULL ,DIJOFS_BUTTON (32 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
679+ {NULL ,DIJOFS_BUTTON (33 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
680+ {NULL ,DIJOFS_BUTTON (34 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
681+ {NULL ,DIJOFS_BUTTON (35 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
682+ {NULL ,DIJOFS_BUTTON (36 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
683+ {NULL ,DIJOFS_BUTTON (37 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
684+ {NULL ,DIJOFS_BUTTON (38 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
685+ {NULL ,DIJOFS_BUTTON (39 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
686+ {NULL ,DIJOFS_BUTTON (40 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
687+ {NULL ,DIJOFS_BUTTON (41 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
688+ {NULL ,DIJOFS_BUTTON (42 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
689+ {NULL ,DIJOFS_BUTTON (43 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
690+ {NULL ,DIJOFS_BUTTON (44 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
691+ {NULL ,DIJOFS_BUTTON (45 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
692+ {NULL ,DIJOFS_BUTTON (46 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
693+ {NULL ,DIJOFS_BUTTON (47 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
694+ {NULL ,DIJOFS_BUTTON (48 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
695+ {NULL ,DIJOFS_BUTTON (49 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
696+ {NULL ,DIJOFS_BUTTON (50 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
697+ {NULL ,DIJOFS_BUTTON (51 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
698+ {NULL ,DIJOFS_BUTTON (52 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
699+ {NULL ,DIJOFS_BUTTON (53 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
700+ {NULL ,DIJOFS_BUTTON (54 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
701+ {NULL ,DIJOFS_BUTTON (55 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
702+ {NULL ,DIJOFS_BUTTON (56 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
703+ {NULL ,DIJOFS_BUTTON (57 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
704+ {NULL ,DIJOFS_BUTTON (58 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
705+ {NULL ,DIJOFS_BUTTON (59 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
706+ {NULL ,DIJOFS_BUTTON (60 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
707+ {NULL ,DIJOFS_BUTTON (61 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
708+ {NULL ,DIJOFS_BUTTON (62 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
709+ {NULL ,DIJOFS_BUTTON (63 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
710+ {NULL ,DIJOFS_BUTTON (64 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
711+ {NULL ,DIJOFS_BUTTON (65 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
712+ {NULL ,DIJOFS_BUTTON (66 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
713+ {NULL ,DIJOFS_BUTTON (67 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
714+ {NULL ,DIJOFS_BUTTON (68 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
715+ {NULL ,DIJOFS_BUTTON (69 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
716+ {NULL ,DIJOFS_BUTTON (70 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
717+ {NULL ,DIJOFS_BUTTON (71 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
718+ {NULL ,DIJOFS_BUTTON (72 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
719+ {NULL ,DIJOFS_BUTTON (73 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
720+ {NULL ,DIJOFS_BUTTON (74 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
721+ {NULL ,DIJOFS_BUTTON (75 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
722+ {NULL ,DIJOFS_BUTTON (76 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
723+ {NULL ,DIJOFS_BUTTON (77 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
724+ {NULL ,DIJOFS_BUTTON (78 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
725+ {NULL ,DIJOFS_BUTTON (79 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
726+ {NULL ,DIJOFS_BUTTON (80 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
727+ {NULL ,DIJOFS_BUTTON (81 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
728+ {NULL ,DIJOFS_BUTTON (82 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
729+ {NULL ,DIJOFS_BUTTON (83 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
730+ {NULL ,DIJOFS_BUTTON (84 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
731+ {NULL ,DIJOFS_BUTTON (85 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
732+ {NULL ,DIJOFS_BUTTON (86 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
733+ {NULL ,DIJOFS_BUTTON (87 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
734+ {NULL ,DIJOFS_BUTTON (88 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
735+ {NULL ,DIJOFS_BUTTON (89 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
736+ {NULL ,DIJOFS_BUTTON (90 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
737+ {NULL ,DIJOFS_BUTTON (91 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
738+ {NULL ,DIJOFS_BUTTON (92 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
739+ {NULL ,DIJOFS_BUTTON (93 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
740+ {NULL ,DIJOFS_BUTTON (94 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
741+ {NULL ,DIJOFS_BUTTON (95 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
742+ {NULL ,DIJOFS_BUTTON (96 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
743+ {NULL ,DIJOFS_BUTTON (97 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
744+ {NULL ,DIJOFS_BUTTON (98 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
745+ {NULL ,DIJOFS_BUTTON (99 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
746+ {NULL ,DIJOFS_BUTTON (100 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
747+ {NULL ,DIJOFS_BUTTON (101 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
748+ {NULL ,DIJOFS_BUTTON (102 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
749+ {NULL ,DIJOFS_BUTTON (103 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
750+ {NULL ,DIJOFS_BUTTON (104 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
751+ {NULL ,DIJOFS_BUTTON (105 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
752+ {NULL ,DIJOFS_BUTTON (106 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
753+ {NULL ,DIJOFS_BUTTON (107 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
754+ {NULL ,DIJOFS_BUTTON (108 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
755+ {NULL ,DIJOFS_BUTTON (109 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
756+ {NULL ,DIJOFS_BUTTON (110 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
757+ {NULL ,DIJOFS_BUTTON (111 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
758+ {NULL ,DIJOFS_BUTTON (112 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
759+ {NULL ,DIJOFS_BUTTON (113 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
760+ {NULL ,DIJOFS_BUTTON (114 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
761+ {NULL ,DIJOFS_BUTTON (115 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
762+ {NULL ,DIJOFS_BUTTON (116 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
763+ {NULL ,DIJOFS_BUTTON (117 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
764+ {NULL ,DIJOFS_BUTTON (118 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
765+ {NULL ,DIJOFS_BUTTON (119 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
766+ {NULL ,DIJOFS_BUTTON (120 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
767+ {NULL ,DIJOFS_BUTTON (121 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
768+ {NULL ,DIJOFS_BUTTON (122 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
769+ {NULL ,DIJOFS_BUTTON (123 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
770+ {NULL ,DIJOFS_BUTTON (124 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
771+ {NULL ,DIJOFS_BUTTON (125 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
772+ {NULL ,DIJOFS_BUTTON (126 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
773+ {NULL ,DIJOFS_BUTTON (127 ),DIDFT_OPTIONAL |DIDFT_BUTTON |DIDFT_ANYINSTANCE },
774+ };
775+
776+ static const DIDATAFORMAT data_format =
777+ {
778+ sizeof (DIDATAFORMAT ),
779+ sizeof (DIOBJECTDATAFORMAT ),
780+ DIDF_ABSAXIS ,
781+ sizeof (DIJOYSTATE2 ),
782+ ARRAY_SIZE (data_format_objs ),
783+ (LPDIOBJECTDATAFORMAT )data_format_objs
784+ };
785+
632786void provider_create ( const WCHAR * device_path )
633787{
634788 IDirectInputDevice8W * dinput_device ;
@@ -653,7 +807,7 @@ void provider_create( const WCHAR *device_path )
653807 if (FAILED (hr )) return ;
654808
655809 if (FAILED (hr = IDirectInputDevice8_SetCooperativeLevel ( dinput_device , 0 , DISCL_BACKGROUND | DISCL_NONEXCLUSIVE ))) goto done ;
656- if (FAILED (hr = IDirectInputDevice8_SetDataFormat ( dinput_device , & c_dfDIJoystick2 ))) goto done ;
810+ if (FAILED (hr = IDirectInputDevice8_SetDataFormat ( dinput_device , & data_format ))) goto done ;
657811 if (FAILED (hr = IDirectInputDevice8_Acquire ( dinput_device ))) goto done ;
658812
659813 if (!(impl = calloc ( 1 , sizeof (* impl ) ))) goto done ;
0 commit comments