Implicit type casting in shaders

I’m working on an unofficial port of WallpaperEngine to Linux (GitHub - Almamu/linux-wallpaperengine: Wallpaper Engine backgrounds for Linux!) using OpenGL. The original software used GLSL up to a certain point when it switched to HLSL, so to keep compatibility with shaders written for old versions, all the shaders are still in almost 100% valid GLSL and converted on the fly to HLSL.

But, not having to support GLSL some of those shaders have fallen victim of illegal implicit type castings or illegal operands, for example:

varying vec4 v_TexCoord;
uniform vec2 g_PointerPosition;
uniform sampler2D g_Texture0;
uniform float u_pointerSpeed;
uniform float c;
uniform vec3 u_WaveColor;
uniform float u_Brightness;
uniform float frequency;

// ...

// this one
vec4 scene = texture(g_Texture0, v_TexCoord);
// should be
vec4 scene = texture(g_Texture0, v_TexCoord.xy);
// or this one
float pointer = g_PointerPosition.xy * u_pointerSpeed;
// should be
float pointer = (g_PointerPosition.xy * u_pointerSpeed).x;
// or this one
vec3 colour = vec3(pow(abs(c),  u_WaveColor * u_Brightness));
// should be
vec3 colour = vec3(pow(abs(c),  (u_WaveColor * u_Brightness).x));
// or this one
uint barFreq1 = frequency % RESOLUTION;
// should be
uint barFreq1 = fmod(frequency, RESOLUTION);

What would be the best approach to support these under OpenGL? I’m kind of lost on what my options are. I was looking at glslang but I cannot really understand how it could be used for this purpose…