| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -13,10 +13,27 @@
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include "util.h"
 | 
					 | 
					 | 
					 | 
					#include "util.h"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					void ipc_send_workspace_command(struct swaybar *bar, const char *ws) {
 | 
					 | 
					 | 
					 | 
					void ipc_send_workspace_command(struct swaybar *bar, const char *ws) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						const char *fmt = "workspace \"%s\"";
 | 
					 | 
					 | 
					 | 
						uint32_t size = strlen("workspace \"\"") + strlen(ws);
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						uint32_t size = snprintf(NULL, 0, fmt, ws);
 | 
					 | 
					 | 
					 | 
						for (size_t i = 0; i < strlen(ws); ++i) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						char *command = malloc(sizeof(char) * (size + 1));
 | 
					 | 
					 | 
					 | 
							if (ws[i] == '"' || ws[i] == '\\') {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						snprintf(command, size, fmt, ws);
 | 
					 | 
					 | 
					 | 
								++size;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						char *command = malloc(size) + 1;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						if (!command) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							return;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						strcpy(command, "workspace \"");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						strcpy(&command[size - 1], "\"");
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						for (size_t i = 0, d = strlen("workspace \""); i < strlen(ws); ++i) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							if (ws[i] == '"' || ws[i] == '\\') {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								command[d++] = '\\';
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							command[d++] = ws[i];
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ipc_single_command(bar->ipc_socketfd, IPC_COMMAND, command, &size);
 | 
					 | 
					 | 
					 | 
						ipc_single_command(bar->ipc_socketfd, IPC_COMMAND, command, &size);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						free(command);
 | 
					 | 
					 | 
					 | 
						free(command);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
 
 |