Browse code

Disable unnedded plugins in viewonly mode

Dario Rodriguez authored on 21/01/2021 21:21:23
Showing 1 changed files
... ...
@@ -109,7 +109,7 @@ static void sighandler_sigpipe(int num);
109 109
 static int mystricmp(const char *s1, const char *s2);
110 110
 
111 111
 
112
-re_t *re_init(void);
112
+re_t *re_init(int viewonly);
113 113
 void re_free(re_t *re);
114 114
 int re_setuidata(re_t *re);
115 115
 
... ...
@@ -152,17 +152,19 @@ main(int argc, char *argv[])
152 152
         int flag_had_events;
153 153
         time_t lastidle,now;
154 154
         int load_pending;
155
+        int viewonly;
155 156
         int i,l;
156 157
         if(argc!=2 || strcmp(argv[argc-1],"--help")==0) {
157 158
                 fprintf(stderr,"Syntax: %s filename\n",argv[0]);
158 159
                 return(1);
159 160
         }
160
-        if((re=re_init())==NULL) {
161
+        viewonly=0;
162
+        if((i=strlen(argv[0]))>=(l=strlen(VIEWONLYPROGNAME)) && strcmp(argv[0]+i-l,VIEWONLYPROGNAME)==0)
163
+                viewonly=1;
164
+        if((re=re_init(viewonly))==NULL) {
161 165
                 fprintf(stderr,"ERROR: couldn't init structs.\n");
162 166
                 return(2);
163 167
         }
164
-        if((i=strlen(argv[0]))>=(l=strlen(VIEWONLYPROGNAME)) && strcmp(argv[0]+i-l,VIEWONLYPROGNAME)==0)
165
-                re->viewonly=1;
166 168
         if((ssel=sselect_init())==NULL) {
167 169
                 fprintf(stderr,"ERROR: couln't init internal data.\n");
168 170
                 re_free(re),re=NULL;
... ...
@@ -456,17 +458,24 @@ mystricmp(const char *s1, const char *s2)
456 458
 }
457 459
 
458 460
 re_t *
459
-re_init(void)
461
+re_init(int viewonly)
460 462
 {
461 463
         re_t *re;
462 464
         if((re=malloc(sizeof(re_t)))==NULL)
463 465
                 return(NULL); /* insuf. mem. */
464 466
         memset(re,0,sizeof(re_t));
465
-        if((re->data=redata_init(
466
-          redata_unsaved_register,
467
-          redata_highlighter_register,
468
-          redata_prototypes_register,
469
-          NULL))==NULL) {
467
+        if(viewonly==0) {
468
+                re->data=redata_init(
469
+                  redata_unsaved_register,
470
+                  redata_highlighter_register,
471
+                  redata_prototypes_register,
472
+                  NULL);
473
+        } else { /* viewonly */
474
+               re->data=redata_init(
475
+                  redata_highlighter_register,
476
+                  NULL);
477
+        }
478
+        if(re->data==NULL) {
470 479
                 re_free(re),re=NULL;
471 480
                 return(NULL); /* insuf. mem. */
472 481
         }
... ...
@@ -475,6 +484,7 @@ re_init(void)
475 484
                 re_free(re),re=NULL;
476 485
                 return(NULL); /* video init error */
477 486
         }
487
+        re->viewonly=(viewonly!=0)?1:0;
478 488
         return(re);
479 489
 }
480 490