mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-11-03 09:01:50 -05:00 
			
		
		
		
	util: implement pa_get_binary_name on FreeBSD without procfs requirement
procfs is not mounted by default, sysctl offers a bulletproof way of requesting this information. Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/277>
This commit is contained in:
		
							parent
							
								
									e6560becf1
								
							
						
					
					
						commit
						f57ceec7a2
					
				
					 1 changed files with 10 additions and 5 deletions
				
			
		| 
						 | 
					@ -91,6 +91,10 @@ static int _main() PA_GCC_WEAKREF(main);
 | 
				
			||||||
#include <sys/sysctl.h>
 | 
					#include <sys/sysctl.h>
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __FreeBSD__
 | 
				
			||||||
 | 
					#include <sys/sysctl.h>
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef HAVE_DBUS
 | 
					#ifdef HAVE_DBUS
 | 
				
			||||||
#include <pulsecore/rtkit.h>
 | 
					#include <pulsecore/rtkit.h>
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					@ -224,7 +228,7 @@ char *pa_get_binary_name(char *s, size_t l) {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(__linux__) || defined(__FreeBSD_kernel__)
 | 
					#if defined(__linux__) || (defined(__FreeBSD_kernel__) && !defined(__FreeBSD__))
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        char *rp;
 | 
					        char *rp;
 | 
				
			||||||
        /* This works on Linux and Debian/kFreeBSD */
 | 
					        /* This works on Linux and Debian/kFreeBSD */
 | 
				
			||||||
| 
						 | 
					@ -239,11 +243,12 @@ char *pa_get_binary_name(char *s, size_t l) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __FreeBSD__
 | 
					#ifdef __FreeBSD__
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        char *rp;
 | 
					        char path[PATH_MAX + 1];
 | 
				
			||||||
 | 
					        size_t len = PATH_MAX;
 | 
				
			||||||
 | 
					        int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if ((rp = pa_readlink("/proc/curproc/file"))) {
 | 
					        if (sysctl(mib, 4, &path, &len, NULL, 0) == 0) {
 | 
				
			||||||
            pa_strlcpy(s, pa_path_get_filename(rp), l);
 | 
					            pa_strlcpy(s, pa_path_get_filename(path), l);
 | 
				
			||||||
            pa_xfree(rp);
 | 
					 | 
				
			||||||
            return s;
 | 
					            return s;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue