mirror of
				https://github.com/tmux/tmux.git
				synced 2025-10-26 12:27:15 +00:00 
			
		
		
		
	Add <, >, <=, >= for formats, GitHub issue 1747.
This commit is contained in:
		
							
								
								
									
										39
									
								
								format.c
									
									
									
									
									
								
							
							
						
						
									
										39
									
								
								format.c
									
									
									
									
									
								
							| @@ -1136,13 +1136,13 @@ format_build_modifiers(struct format_tree *ft, const char **s, u_int *count) | ||||
|  | ||||
| 	/* | ||||
| 	 * Modifiers are a ; separated list of the forms: | ||||
| 	 *      l,m,C,b,d,t,q,E,T,S,W,P | ||||
| 	 *      l,m,C,b,d,t,q,E,T,S,W,P,<,> | ||||
| 	 *	=a | ||||
| 	 *	=/a | ||||
| 	 *      =/a/ | ||||
| 	 *	s/a/b/ | ||||
| 	 *	s/a/b | ||||
| 	 *	||,&&,!=,== | ||||
| 	 *	||,&&,!=,==,<=,>= | ||||
| 	 */ | ||||
|  | ||||
| 	*count = 0; | ||||
| @@ -1153,7 +1153,7 @@ format_build_modifiers(struct format_tree *ft, const char **s, u_int *count) | ||||
| 			cp++; | ||||
|  | ||||
| 		/* Check single character modifiers with no arguments. */ | ||||
| 		if (strchr("lmCbdtqETSWP", cp[0]) != NULL && | ||||
| 		if (strchr("lmCbdtqETSWP<>", cp[0]) != NULL && | ||||
| 		    format_is_end(cp[1])) { | ||||
| 			format_add_modifier(&list, count, cp, 1, NULL, 0); | ||||
| 			cp++; | ||||
| @@ -1164,7 +1164,9 @@ format_build_modifiers(struct format_tree *ft, const char **s, u_int *count) | ||||
| 		if ((memcmp("||", cp, 2) == 0 || | ||||
| 		    memcmp("&&", cp, 2) == 0 || | ||||
| 		    memcmp("!=", cp, 2) == 0 || | ||||
| 		    memcmp("==", cp, 2) == 0) && | ||||
| 		    memcmp("==", cp, 2) == 0 || | ||||
| 		    memcmp("<=", cp, 2) == 0 || | ||||
| 		    memcmp(">=", cp, 2) == 0) && | ||||
| 		    format_is_end(cp[2])) { | ||||
| 			format_add_modifier(&list, count, cp, 2, NULL, 0); | ||||
| 			cp += 2; | ||||
| @@ -1433,6 +1435,8 @@ format_replace(struct format_tree *ft, const char *key, size_t keylen, | ||||
| 		if (fm->size == 1) { | ||||
| 			switch (fm->modifier[0]) { | ||||
| 			case 'm': | ||||
| 			case '<': | ||||
| 			case '>': | ||||
| 				cmp = fm; | ||||
| 				break; | ||||
| 			case 'C': | ||||
| @@ -1486,7 +1490,9 @@ format_replace(struct format_tree *ft, const char *key, size_t keylen, | ||||
| 			if (strcmp(fm->modifier, "||") == 0 || | ||||
| 			    strcmp(fm->modifier, "&&") == 0 || | ||||
| 			    strcmp(fm->modifier, "==") == 0 || | ||||
| 			    strcmp(fm->modifier, "!=") == 0) | ||||
| 			    strcmp(fm->modifier, "!=") == 0 || | ||||
| 			    strcmp(fm->modifier, ">=") == 0 || | ||||
| 			    strcmp(fm->modifier, "<=") == 0) | ||||
| 				cmp = fm; | ||||
| 		} | ||||
| 	} | ||||
| @@ -1549,8 +1555,27 @@ format_replace(struct format_tree *ft, const char *key, size_t keylen, | ||||
| 				value = xstrdup("1"); | ||||
| 			else | ||||
| 				value = xstrdup("0"); | ||||
| 		} | ||||
| 		else if (strcmp(cmp->modifier, "m") == 0) { | ||||
| 		} else if (strcmp(cmp->modifier, "<") == 0) { | ||||
| 			if (strcmp(left, right) < 0) | ||||
| 				value = xstrdup("1"); | ||||
| 			else | ||||
| 				value = xstrdup("0"); | ||||
| 		} else if (strcmp(cmp->modifier, ">") == 0) { | ||||
| 			if (strcmp(left, right) > 0) | ||||
| 				value = xstrdup("1"); | ||||
| 			else | ||||
| 				value = xstrdup("0"); | ||||
| 		} else if (strcmp(cmp->modifier, "<=") == 0) { | ||||
| 			if (strcmp(left, right) <= 0) | ||||
| 				value = xstrdup("1"); | ||||
| 			else | ||||
| 				value = xstrdup("0"); | ||||
| 		} else if (strcmp(cmp->modifier, ">=") == 0) { | ||||
| 			if (strcmp(left, right) >= 0) | ||||
| 				value = xstrdup("1"); | ||||
| 			else | ||||
| 				value = xstrdup("0"); | ||||
| 		} else if (strcmp(cmp->modifier, "m") == 0) { | ||||
| 			if (fnmatch(left, right, 0) == 0) | ||||
| 				value = xstrdup("1"); | ||||
| 			else | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 nicm
					nicm