'extern' only works to import from progs which are already loaded. they won't work the other way around (and you don't really know which dat the symbol was copied from either), so be sure to use it only when its meant to exist in the main progs. also, only use it for functions.
I don't know why you're getting a syntax error from that def.
origupdateview = externvalue(MAINPROGS, "CSQC_UpdateView");
externset(MAINPROGS, wrapperupdateview, "CSQC_UpdateView");
those two lines should work the same, to read the prior value and then clobber it with some replacement/wrapper function (which can call the original function as needed). no pointers needed.
note that the CSQC_UpdateView function I wrote provides two alternative ways to call a function from the main progs. one is by name, the other does a name lookup in one (slow) step up then calls by value (which can be repeated without the need for constant lookups).
however, I'd personally recommend to make 'register' functions for various things that can then be called from both the main progs or your addon's init functions, then you're not quite so limited in what addons can do when you want to extend them.